发明内容
本发明的目的是提供应用的隔离实现方法、移动终端、计算机设备和存储介质,实现多用户模式下安装的应用程序隔离使用,提升用户的使用体验。
本发明提供的技术方案如下:
本发明提供一种应用的隔离实现方法,包括步骤:
获取当前用户模式对应的账户标识信息;
根据所述账户标识信息,确定当前用户模式为访客模式时,将应用程序所对应的包名修改为自定义包名,并根据所述自定义包名进行应用程序的处理操作;所述自定义包名包括原始包名和所述账户标识信息。
进一步的,根据所述账户标识信息,确定当前用户模式为访客模式时,将应用程序所对应的包名修改为自定义包名,并根据所述自定义包名进行应用程序的处理操作;所述自定义包名包括原始包名和所述账户标识信息包括步骤:
当所述账户标识信息与预设机主标识信息不相同时,确定所述当前用户模式为所述访客模式;
在所述访客模式下获取到所述应用程序的安装包后,对所述安装包进行解析,从所述安装包中获取所述应用程序的相关数据和所述原始包名;
将安装指令中待安装应用程序所对应包名修改为所述自定义包名;所述自定义包名为访客模式所对应的账号标识信息和原始包名的组合;
根据所述自定义包名创建目标安装目录,将所述应用程序的相关数据储存至所述目标安装目录。
进一步的,根据所述账户标识信息,确定当前用户模式为访客模式时,将应用程序所对应的包名修改为自定义包名,并根据所述自定义包名进行应用程序的处理操作;所述自定义包名包括原始包名和所述账户标识信息还包括步骤:
当在所述访客模式下获取到操作信息时,对所述操作信息进行解析得到操作使用相关指令;
根据所述操作使用相关指令调用其对应的包名变更规则,将所述应用程序使用过程中涉及到包名调用时的包名修改为所述自定义包名;
根据所述自定义包名响应所述操作信息以使用所述应用程序。
进一步的,根据所述账户标识信息,确定当前用户模式为访客模式时,将应用程序所对应的包名修改为自定义包名,并根据所述自定义包名进行应用程序的处理操作;所述自定义包名包括原始包名和所述账户标识信息还包括步骤:
当在所述访客模式下获取到删除指令时,将删除指令中待删除应用程序所对应包名修改为所述自定义包名;
根据所述自定义包名查找并删除所述应用程序对应的相关文件。
本发明还提供一种移动终端,包括:
获取模块,用于获取当前用户模式对应的账户标识信息;
处理模块,用于根据所述账户标识信息,确定当前用户模式为访客模式时,将应用程序所对应的包名修改为自定义包名,并根据所述自定义包名进行应用程序的处理操作;所述自定义包名包括原始包名和所述账户标识信息。
进一步的,所述处理模块包括:
判断单元,用于当所述账户标识信息与预设机主标识信息不相同时,确定所述当前用户模式为所述访客模式;
第一解析单元,用于在所述访客模式下获取到所述应用程序的安装包后,对所述安装包进行解析,从所述安装包中获取所述应用程序的相关数据和所述原始包名;
安装处理单元,用于将安装指令中待安装应用程序所对应包名修改为所述自定义包名,根据所述自定义包名创建目标安装目录,将所述应用程序的相关数据储存至所述目标安装目录;所述自定义包名为访客模式所对应的账号标识信息和原始包名的组合;
其中,预设机主标识信息为机主购买到移动终端时进行注册后为机主所分配的,用来表明使用者唯一身份标识的信息。
进一步的,所述处理模块还包括:
第二解析单元,用于当在所述访客模式下获取到操作信息时,对所述操作信息进行解析得到操作使用相关指令;
使用处理单元,用于根据所述操作使用相关指令调用其对应的包名变更规则,将所述应用程序使用过程中涉及到包名调用时的包名修改为所述自定义包名,根据所述自定义包名响应所述操作信息以使用所述应用程序。
进一步的,所述处理模块还包括:
删除处理单元,当在所述访客模式下获取到删除指令时,将删除指令中待删除应用程序所对应包名修改为所述自定义包名;根据所述自定义包名查找并删除所述应用程序对应的相关文件。
本发明还提供一种计算机设备,包括处理器、存储器,其中,所述存储器,用于存放计算机程序;所述处理器,用于执行所述存储器上所存放的计算机程序,实现所述的应用的隔离实现方法所执行的操作。
本发明还提供一种存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现所述的应用的隔离实现方法所执行的操作。
通过本发明提供的应用的隔离实现方法、移动终端、计算机设备和存储介质,能够本发明多用户模式下安装的应用程序隔离使用,提升用户的使用体验。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
本发明的一个实施例,如图1所示,一种应用的隔离实现方法,包括:
S100获取当前用户模式对应的账户标识信息;
具体的,移动终端目前使用的安卓系统支持多用户模式,而多用户模式能够为移动终端的不同用户设置独立的用户空间,使得不同用户之间的部分数据是相互独立的。而移动终端所对应安卓系统的使用者有两种用户角色,分别是机主和访客,机主即移动终端的拥有者,访客登录自身的安卓系统账号后,可以使用大部分系统功能,但无法使用会影响机主的功能,例如恢复出厂设置、免打扰等功能。每一个用户模式均对应有其对应的用户账号,而每个用户账号对应有其各自对应的账户标识信息。
S200根据账户标识信息,确定当前用户模式为访客模式时,将应用程序所对应的包名修改为自定义包名,并根据自定义包名进行应用程序的处理操作;自定义包名包括原始包名和账户标识信息。
具体的,原有的安卓系统是将所有用户模式下(机主模式或者访客模式)的数据均默认储存在一个固定目录中,导致不同用户账户具备相同的应用程序安装空间,虽然不同用户账户不能看到或者使用其他用户账户的同一应用程序,各用户账户的系统消息不共享,各用户账号所对应的应用程序间不能互相访问。但是,由于现有技术中不同用户模式下所使用应用程序的数据均在同一固定目录下,无法实现数据完全隔离,因此,一旦移动终端获取到当前用户模式下所对应的账号标识信息时,就进行判断当前用户模式下对应的账号标识信息是否是预设机主标识信息,一般,预设机主标识信息为机主购买到移动终端时进行注册后为机主所分配的,用来表明使用者唯一身份标识的信息。
如果移动终端被访客所使用即移动终端处于访客模式下,则在访客模式下使用应用程序的过程中,将应用程序对应的包名修改为账户标识信息和原始包名组合的自定义包名,这样使得访客使用移动终端时,能够针对应用程序进行相应的处理操作。其中自定义包名中账户标识信息和原始包名的组合先后顺序不限制,均在本发明保护范围内。
如果当移动终端被机主所使用即移动终端处于机主模式下,则在机主模式下使用应用程序的过程中,不进行包名修改操作即能在机主模式下正常使用机主模式所安装的应用程序。
本实施例中,将访客模式下的应用程序所对应的包名修改为自定义包名,而自定义包名包括原始包名和各自账号所对应账户标识信息的自定义包名,使得不同用户账户所对应的应用程序具备不同的包名,从而使得不同用户账户不能看到和使用其他账户的应用,各用户账户的应用程序间不能互相访问,实现不同用户模式下安装的同一类型的应用程序数据完全隔离,进而使得原有安卓系统下多用户模式下安装的应用程序隔离使用,提升用户体验的目的。
本发明的一个实施例,如图2所示,一种应用的隔离实现方法,包括:
S100获取当前用户模式对应的账户标识信息;
S211当账户标识信息与预设机主标识信息不相同时,确定当前用户模式为访客模式;
具体的,如果当前用户模式对应的账号标识信息与预设机主标识信息不相同时,说明移动终端被访客所使用即移动终端处于访客模式下。如果当前用户模式对应的账号标识信息与预设机主标识信息相同时,说明移动终端被机主所使用即移动终端处于机主模式下。
S212在访客模式下获取到应用程序的安装包后,对安装包进行解析,根据安装包中获取应用程序的相关数据和原始包名;
具体的,在安卓系统中,应用程序的apk安装文件是会被保存起来的,默认情况下,用户安装的apk首先会被拷贝到/data/app目录下,/data/app目录是机主才有权限访问的目录。
安卓系统中有一个packages.xml文件,用来记录当前所有安装的应用的基本信息,每次系统安装或者卸载了任何apk文件,都会更新这个packages.xml文件,安卓系统在安装apk的过程中,会解析apk的packages.xml文件,提取出apk的重要信息(包括权限、应用包名、APK的安装位置、版本等等)。而在访客模式下时,如果移动终端获取到应用程序的安装包后,在安装应用程序的时候会对目标apk(即应用程序的安装包)进行解析,从目标apk中获取应用程序所需的相关数据,并根据目标apk的解析结果获得目标apk的原始包名即应用包名。
S213将安装指令中待安装应用程序所对应包名修改为自定义包名;
具体的,在访客模式下解析得到应用程序的相关数据和原始包名后,将原始包名修改为自定义包名,自定义包名包括访客模式所对应的账号标识信息和原始包名。
S214根据自定义包名创建目标安装目录,将应用程序的相关数据储存至目标安装目录。
具体的,访客模式下,根据自定义包名创建目标安装目录,并将应用程序的相关数据储存至目标安装目录中。在目标安装目录下创建应用程序的数据目录(以自定义包名命名),存放应用程序的相关数据,例如数据库、xml文件等等。
在不同访客用户模式下安装应用程序时,动态将解析后的安装包的原始包名修改成自定义包名(原始包名加用户模式id即访客模式所对应的账号标识信息)的形式,然后后续安装逻辑根据动态设置的自定义包名,进行保存相应的应用程序信息到xml文件中,从而起到不同用户模式下读取xml文件中同一应用程序的包名信息相互隔离,并且在这一过程中还将安装的应用程序预置到相应的data/app+用户模式id的目录即目标安装目录下,使得当前访客模式下应用程序的安装目录与机主模式下应用程序的安装目录相互隔离开,并且使得当前访客模式下应用程序的安装目录与其他访客模式下应用程序的安装目录相互隔离开。以上过程为不同访客模式下的安装应用程序过程。
示例性的,例如用户甲进入创建的访客模式A下,此时创建的访客模式所对应访客id的即是账号标识信息是10,安装一个机主也存在的应用程序app1,假设该应用程序app1的正常包名即原始包名为com.aa.bb,在创建的访客模式A下安装过程中将解析得到的Package对象进行包名变更,后续安装流程采用修改包名后的Package对象,此后安装保存的packages.xml所保存的包名信息为自定义包名,该自定义包名为原始包名和当前访客模式A下对应的访客id的组合(可以是com.aa.bb10,也可以是10com.aa.bb),最后访客模式A下安装的应用程序app1所对应的目标apk存放至目标安装目录中,而由于目标安装目录根据自定义包名创建,即访客模式A下将待安装应用程序app1所对应的目标apk存放至data/app10中。
S221当在访客模式下获取到操作信息时,对操作信息进行解析得到操作使用相关指令;
S222根据操作使用相关指令调用其对应的包名变更规则,将应用程序使用过程中涉及到包名调用时的包名修改为自定义包名;
S223根据自定义包名响应操作信息以使用应用程序。
具体的,操作使用相关指令包括相关授权操作,apk使用操作,被其他第三方应用程序使用操作,桌面快捷方式创建操作,获取或者查询四大组件操作等。使用应用程序过程其实是基于安装应用程序过程的后续处理,因为在安装应用程序过程修改包名后,会导致应用程序使用过程中出现问题,在打开和使用应用程序的过程中,例如检测权限时获取及其查询一些四大组件信息时需要通过包名进行相应的查询,由于这些使用过程中的包名传递的是原始包名,会导致无法找到此包名相关的应用程序包的信息,从而需要在这些使用过程对应的逻辑代码中添加原始包名转化为自定义包名的包名变更规则,来保证这些应用程序所对应的操作能够正常使用。即在访客模式下获取到操作信息并解析得到其对应的操作使用相关指令后,根据操作使用相关指令调用其对应的包名变更规则将应用程序使用过程中涉及到包名调用时的包名修改为自定义包名。
示例性的,检测权限(定位权限、联系人读取权限、短信读取权限等等)时会调用系统的checkPermission(…,String packageName,…)方法,实现检测权限时一般传递的应用程序的原始包名com.aa.bb,但访客模式下安装应用程序过程的包名变更为com.aa.bb10,所以需将原始包名com.aa.bb动态修改变更为自定义包名com.aa.bb10,以供供后面逻辑使用。
示例性的,获取四大组件(Activity、Service、Recever、Provider)相关方法,例如:getActivityInfo打开应用界面时,getServiceInfo使用应用服务时,getReceverInfo接受发起应用广播时,getProviderInfo提供查询provider数据源时,根据component参数中获取原始包名,然后将包名进行转换为自定义包名,再将转换后的自定义包名设置到component参数中。
示例性的,查询四大组件(Activity、Service、Recever、Provider)相关方法,例如:queryIntentActivities查询应用界面时,queryIntentServices查询应用服务时,queryIntentRecevers查询发起应用广播时,queryIntentContentProviders查询provider数据源时,根据Intent参数获取原始包名,然后将获取的包名进行转换为自定义包名。
示例性的,在安卓系统中,如果想在安卓桌面上看到应用程序,需要从PackageManagerService服务中把安装好的应用程序在桌面上展现出来,例如以桌面快捷图标的形式把已经安装的应用程序在桌面中展现出来,则再创建桌面快捷图标时,将包名变更为自定义包名后,根据自定义包名找到对应安装目录中的应用程序文件,然后根据应用程序文件生成应用程序对应的桌面快捷图标。
S231当在访客模式下获取到删除指令时,将删除指令中待删除应用程序所对应包名修改为自定义包名;
S232根据自定义包名查找并删除应用程序对应的相关文件。
具体的,卸载应用程序过程也是基于安装应用程序过程的后续处理,在卸载时需要将删除指令中待删除应用程序的包名转化为自定义包名,从而根据自定义包名查找其对应的目标安装目录,进而删除目标安装目录中的相关文件。当然,如果使用应用程序使用的过程中产生了其他的文件,也可以根据自定义包名查找并删除其他文件。例如桌面快捷图标,也可以根据自定义包名查找并删除应用程序的桌面快捷图标。删除方式可以是通过现有的安卓系统卸载方法deletePackageAsUser(String packageName,…),该方法可能传递的包名为原始包名com.aa.bb,导致当前访客模式下无法查找到此应用程序,从而引起在当前访客模式下无法正常卸载此应用程序的问题,所以,就需要将packageName对应的包名com.aa.bb转换为自定义包名com.aa.bb10,使得在当前访客模式下需要卸载删除某一应用程序app2时,根据自定义包名查找到应用程序app2所对应的目标安装目录data/app10,从而删除目标安装目录data/app10中的相关文件。
本实施例中,包名是用来区分移动终端上应用程序的,不同的应用程序拥有不同的包名。一般来说,同一个移动终端上是不允许安装相同的包名的多个应用程序的,而应用程序的安装和使用的目录也基本由包名决定。例如,如果机主模式或者访客模式A安装了版本号是4.0的APP,则访客模式B在安装低于4.0版本号的同一个APP,会出现安装失败。此外,如果机主模式或者访客模式A对APP进行了升级,则访客模式B在登录后就也只能使用机主或者访客A进行升级后的APP了。因此,多用户模式下如何隔离使用多个相同的应用程序时,需要将应用程序的包名进行修改为自定义包名,且自定义包括包括原始包名和账号标识信息,避免多用户模式下无法安装不同版本的应用程序、升级后强制升级的问题,不同用户模式下安装的同一应用程序数据完全隔离,不会出现一个用户模式下应用程序升级导致另外一个应用程序模式下同时升级的问题,并且不同用户模式下安装目录也不会被覆盖,从而不会导致一个用户模式下删除某一应用程序时,造成其他用户模式下所安装的同一应用程序都会无法使用的问题。因此,实现了多用户模式下安装的同一应用程序可以完全隔离,使得不同用户模式下使用同一个应用程序不冲突,可以使多用户模式下某个应用程序的不同版本同时共存,并使得原有安卓系统下多用户模式下安装的应用程序隔离使用,避免数据的丢失,提升用户体验的目的。
本发明的一个实施例,如图3所示,一种移动终端,包括:
获取模块10,用于获取当前用户模式对应的账户标识信息;
处理模块20,用于当根据账户标识信息确定处于访客模式下时,将应用程序所对应的包名修改为自定义包名,并根据自定义包名对应用程序进行对应操作;自定义包名包括原始包名和账户标识信息。
基于前述实施例,如图4所示,处理模块20包括:
判断单元21,用于当账户标识信息与预设机主标识信息不相同时,确定当前用户模式为访客模式;
第一解析单元22,用于当所述账户标识信息与预设机主标识信息不相同时,确定所述当前用户模式为所述访客模式;
安装处理单元23,用于将安装指令中待安装应用程序所对应包名修改为所述自定义包名,根据所述自定义包名创建目标安装目录,将所述应用程序的相关数据储存至所述目标安装目录;所述自定义包名为访客模式所对应的账号标识信息和原始包名的组合。
基于前述实施例,处理模块2还包括:
第二解析单元24,用于当在访客模式下获取到操作信息时,对操作信息进行解析得到操作使用相关指令;
使用处理单元25,用于根据操作使用相关指令调用其对应的包名变更规则将删除指令中待删除应用程序所对应包名修改为自定义包名;根据自定义包名响应操作信息以使用应用程序。
基于前述实施例,处理模块2还包括:
删除处理单元26,当在访客模式下获取到删除指令时,将删除指令中待删除应用程序所对应包名修改为自定义包名;根据自定义包名查找并删除应用程序对应的相关文件。
具体的,本实施例是上述方法实施例对应的装置实施例,具体效果参见上述方法实施例,在此不再一一赘述。
本发明的一个实施例,如图5所示,一种计算机设备100,包括处理器110、存储器120,其中,存储器120,用于存放计算机程序;处理器110,用于执行存储器120上所存放的计算机程序,实现上述应用的隔离实现方法对应实施例所执行的操作。
图5是本发明实施例提供的一种计算机设备100的结构示意图。参见图5,该计算机设备100包括处理器110和存储器120,还可以包括通信接口140和通信总线120,还可以包括输入/输出接口130,其中,处理器110、存储器120、输入/输出接口130和通信接口140通过通信总线120完成相互间的通信。该存储器120存储有计算机程序,该处理器110用于执行存储器120上所存放的计算机程序,实现上述图1-图2所对应方法实施例中的应用的隔离实现方法。
通信总线120是连接所描述的元素的电路并且在这些元素之间实现传输。例如,处理器110通过通信总线120从其它元素接收到命令,解密接收到的命令,根据解密的命令执行计算或数据处理。存储器120可以包括程序模块,例如内核(kernel),中间件(middleware),应用程序程序编程接口(Application Programming Interface,API)和应用程序。该程序模块可以是有软件、固件或硬件、或其中的至少两种组成。输入/输出接口130转发用户通过输入输出设备(例如感应器、键盘、触摸屏)输入的命令或数据。通信接口140将该计算机设备100与其它网络设备、用户设备、网络进行连接。例如,通信接口140可以通过有线或无线连接到网络以连接到外部其它的网络设备或用户设备。无线通信可以包括以下至少一种:无线保真(WiFi),蓝牙(BT),近距离无线通信技术(NFC),全球卫星定位系统(GPS)和蜂窝通信等等。有线通信可以包括以下至少一种:通用串行总线(USB),高清晰度多媒体接口(HDMI),异步传输标准接口(RS-232)等等。网络可以是电信网络和通信网络。通信网络可以为计算机网络、因特网、物联网、电话网络。计算机设备100可以通过通信接口140连接网络,计算机设备100和其它网络设备通信所用的协议可以被应用程序、应用程序程序编程接口(API)、中间件、内核和通信接口140至少一个支持。
本发明的一个实施例,一种存储介质,存储介质中存储有至少一条指令,指令由处理器加载并执行以实现上述图1-图2所对应方法实施例中的应用的隔离实现方法。例如,计算机可读存储介质可以是只读内存(ROM)、随机存取存储器(RAM)、只读光盘(CD-ROM)、磁带、软盘和光数据存储设备等。
它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。