一种权限适配方法及装置与流程

文档序号:12734547阅读:159来源:国知局
一种权限适配方法及装置与流程

本发明涉及客户端开发技术领域,特别是涉及一种权限适配方法及装置。



背景技术:

为了改善Android 6.0之前、用户信息的泄漏,以及用户对权限不可感知的问题,Android 6.0之后,系统对权限分配进行了改善,用户可以不管权限直接安装客户端,当客户端需要调用某些权限的时候,用户根据自己的实际需要在运行时中对各项权限进行审核,且随时关闭其中的部分权限。如此对权限适配提出了很高的要求。

现有的权限适配方法,客户端需要调用某些权限时,首先,需要与系统进行交互,进而检查该权限是否已经被授权;然后,在该权限没有被授权时,向系统申请权限;在该权限已经被授权时,客户端调用该权限正常运行。

由上述现有的权限适配方法可以看到,在客户端需要调用某些权限时,首先需要与系统进行交互,才能知道需要调用的该权限是否已经被授权;进而判断是否需要向系统申请权限,如此会增加客户端与系统之间交互的过程,使得权限适配过程复杂,权限适配效率低。



技术实现要素:

本发明实施例的目的在于提供一种权限适配方法及装置,以简化权限适配的过程,提高权限适配的效率。具体技术方案如下:

一方面,本发明实施例提供了一种权限适配方法,包括:

实时接收并保存系统广播信息,其中,所述系统广播信息在客户端权限的授权情况发生改变时获得;

在调用客户端权限时,根据所述客户端权限对应的最新系统广播信息,判断客户端是否被授权使用所述客户端权限;

判断所述客户端无权使用所述客户端权限时,向操作系统发送权限申请,以使所述操作系统向用户提供权限申请提示信息;

接收所述权限申请提示信息的处理结果,并根据所述处理结果,对应地确定所述客户端有权使用所述客户端权限、或者所述客户端无权使用所述客户端权限。

可选的,所述根据所述客户端权限对应的最新系统广播信息,判断客户端是否被授权使用所述客户端权限,包括:

在所述系统广播信息中所述客户端权限的授权设置打开时,确定所述客户端权限被授权;

在所述系统广播信息中所述客户端权限的授权设置关闭时,确定所述客户端权限未被授权。

可选的,所述权限申请提示信息包括权限申请提示对话框,其中,所述权限申请提示对话框包括:允许选项、拒绝选项和不再提醒选项。

可选的,所述根据所述处理结果,对应地确定所述客户端有权使用所述客户端权限、或者所述客户端无权使用所述客户端权限,包括:

在所述处理结果为允许所述客户端使用所述客户端权限时,确定所述客户端有权使用所述客户端权限;

在所述处理结果为拒绝所述客户端使用所述客户端权限时,确定所述客户端无权使用所述客户端权限。

可选的,在所述处理结果为拒绝所述客户端使用所述客户端权限时,确定所述客户端无权使用所述客户端权限,包括:

当所述处理结果为选择所述拒绝选项、且选择所述不再提醒选项时,所述客户端无权使用所述客户端权限,并且,所述客户端再次调用所述权限时,直接确定所述客户端无权使用所述客户端权限。

可选的,所述方法还包括:

建立权限申请接口和回调接口,在所述客户端需要调用所述客户端权限时,通过权限申请接口申请所述客户端权限,并通过所述回调接口,返回对申请所述客户端权限的处理结果。

可选的,所述客户端权限包括:影响用户隐私的敏感权限。

另一方面,本发明实施例还提供了一种权限适配装置,包括:

接收模块,用于实时接收并保存系统广播信息,其中,所述系统广播信息在客户端权限的授权情况发生改变时获得;

判断模块,用于在调用客户端权限时,根据所述客户端权限对应的最新系统广播信息,判断客户端是否被授权使用所述客户端权限;

请求模块,用于判断所述客户端无权使用所述客户端权限时,向操作系统发送权限申请,以使所述操作系统向用户提供权限申请提示信息;

处理模块,用于接收所述权限申请提示信息的处理结果,并根据所述处理结果,对应地确定所述客户端有权使用所述客户端权限、或者所述客户端无权使用所述客户端权限。

可选的,所述判断模块包括:

第一确定子模块,用于在所述系统广播信息中所述客户端权限的授权设置打开时,确定所述客户端权限被授权;

第二确定子模块,用于在所述系统广播信息中所述客户端权限的授权设置关闭时,确定所述客户端权限未被授权。

可选的,所述权限申请提示信息包括权限申请提示对话框,其中,所述权限申请提示对话框包括:允许选项、拒绝选项和不再提醒选项。

本发明实施例提供的一种权限适配方法及装置,可以实时接收并保存系统广播信息,以使在需要调用客户端权限时,根据客户端权限对应的最新系统广播信息,判断客户端是否被授权使用该客户端权限;并且在判断客户端无权使用该客户端权限时,向操作系统申请客户端权限,以使操作系统向用户提供权限申请提示信息;然后,接收用户对权限申请提示信息的处理结果,并根据处理结果,对应地确定客户端有权或者无权使用客户端权限。本发明实施例提供的权限适配方法及装置,通过系统广播的消息判断客户端是否被授权使用该客户端权限,可以实时地检查该客户端权限是否被授权,不需要客户端在需要客户端权限时首先向系统请求,进而才能检查客户端权限是否被授权,可以简化权限适配过程,提高权限适配的效率。当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的权限适配方法的流程图;

图2为本发明实施例提供的权限适配装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本发明实施例权限适配方法的流程图,参照图1对本发明实施例权限适配方法进行详细说明,包括:

步骤101,实时接收并保存系统广播信息,其中,系统广播信息在客户端权限的授权情况发生改变时获得。

本发明实施例权限适配方法可以应用于客户端,例如,移动客户端,其中,移动客户端可以包括:手机软件APP等。

因为客户端权限的授权情况随时都可能发生变化,例如,客户端在之前的运行过程中是被授权可以使用该客户端权限的,但是,后面用户在操作系统的权限管理中,将客户端权限设置为禁止,客户端则无权继续使用该客户端权限,即该客户端权限的授权情况发生了改变。但是,客户端对于客户端权限的这种变化是不知道的,所以,每次在调用该客户端权限时,首先需要检查客户端权限的授权情况;然后,在检查到没有被授权使用该客户端权限时,进行后续地动态申请过程。

本发明实施例权限适配方法中,客户端权限的授权情况发生变化时,操作系统都会产生对应的系统广播信息,并将该系统广播信息,通过广播发送至客户端,客户端实时地接收该系统广播信息。如此使得,后续检查客户端权限是否被授权的过程中,可以直接利用该系统广播信息。

步骤102,在调用客户端权限时,根据客户端权限对应的最新系统广播信息,判断客户端是否被授权使用客户端权限。

不难理解的是,客户端权限的授权情况在不同时刻都有可能发生变化,所以客户端接收到的系统广播信息有很多。

而本发明实施例权限适配方法需要检查的是在客户端调用客户端权限时,客户端是否已经被授权使用该客户端权限,所以需要选取客户端权限对应的最新系统广播信息,并根据该最新系统广播信息判断在调用该客户端权限时,客户端是否被授权使用该客户端权限。

步骤103,判断客户端无权使用客户端权限时,向操作系统发送权限申请,以使操作系统向用户提供权限申请提示信息。

当判断得到的结果是客户端无权使用客户端权限时,则需要向操作系统申请该客户端权限,可以向操作系统发送权限申请,具体的可以是向操作系统发送请求,操作系统接收到客户端发送的请求后、响应该请求,并向用户提供权限申请提示信息,以使用户可以选择是否要授权客户端使用该客户端权限。

需要说明的是,权限申请提示信息包括权限申请提示对话框,即该权限申请提示信息可以是以弹出对话框的形式提供给用户,其中,权限申请提示对话框可以包括:允许选项、拒绝选项和不再提醒选项。另外,在实际的应用过程中,权限申请提示对话框中可以有简单地解释,告诉用户客户端为什么需要该客户端权限,以方便用户清楚地判断是否授权。具体地,向用户提供权限申请提示信息可以通过代码实现,具体地代码如下:

ActivityCompat.requestPermissions(target.getActivity(),permissions,getNextR equestCode());

public static void requestPermissions(final@NonNull Activity activity,

final@NonNull String[]permissions,final int requestCode){}

通过上述代码可以实现:客户端在需要客户端权限时,向操作系统发送权限申请,以使操作系统向用户提供权限申请提示信息,进而方便用户进行处理。

步骤104,接收权限申请提示信息的处理结果,并根据处理结果,对应地确定客户端有权使用客户端权限、或者客户端无权使用客户端权限。

用户接收到系统发送的权限申请提示消息后,对该权限申请提示消息进行处理,具体地包括:授权客户端使用客户端权限、或者拒绝客户端使用客户端权限,用户对权限申请提示信息的处理结果会反馈至操作系统,然后,操纵系统将该处理结果发送给客户端,客户端接收到该处理结果后,根据处理结果的不同,对应地进行不同的操作,具体地,在处理结果为允许客户端使用该客户端权限时,客户端利用客户端权限正常运行;在处理结果为拒绝客户端使用客户端权限时,客户端因为无权使用该客户端权限而异常运行。

本发明实施例提供的权限适配方法,通过实时接收系统广播信息,并在客户端调用客户端权限时,根据该系统广播信息,通过判断客户端是否被授权使用客户端权限,实时地检查客户端权限的授权情况;然后,判断客户端无权使用客户端权限时,向操作系统发送权限申请,以使操作系统向用户提供权限申请提示信息;最后,接收权限申请提示信息的处理结果,并根据处理结果,对应地利用客户端权限正常运行、或者无权使用客户端权限而异常运行。通过本发明实施例提供的权限适配方法,可以简化权限适配的过程,提高权限适配的效率。

在实际的应用过程中,操作系统通过向客户端发送系统广播信息,以使客户端根据系统广播信息,实时地判断客户端权限的授权情况,具体地,根据客户端权限对应的最新系统广播信息,判断客户端是否被授权使用客户端权限,包括:

在系统广播信息中客户端权限的授权设置打开时,确定客户端权限被授权;

在系统广播信息中客户端权限的授权设置关闭时,确定客户端权限未被授权。

需要说明的是,系统广播信息中包含客户端权限的授权情况,在实际的应用过程中,操作系统获取客户端权限的授权情况,是通过获取客户端权限的授权设置的情况而获得的,具体地,在实际的应用过程中,客户端权限的授权设置的情况可以包括:授权设置是打开的和授权设置是关闭的,其中,授权设置是打开的,即允许使用客户端权限;授权设置是关闭的,即拒绝使用客户端权限。

客户端在需要调用客户端权限时,向操作系统发送权限申请,以使操作系统向用户提供权限申请提示信息,最终需要将用户对权限申请提示信息的处理结果进行回调,也就是将用户对权限申请提示信息的处理结果反馈给客户端,如此才能使客户端根据处理结果进行后续的处理。具体地,根据处理结果的不同,对应地进行不同的操作,在处理结果为允许客户端使用该客户端权限时,客户端利用客户端权限正常运行;在处理结果为拒绝客户端使用客户端权限时,客户端因为无权使用该客户端权限而异常运行。

需要说明的是,Android 6.0以上版本的操作系统中,客户端权限是在客户端需要时通过动态申请而获得,实际应用过程中,得到的结果可以是授权也可以是不授权;而Android 6.0之前版本的操作系统中,客户端一旦安装,所有应用权限都是默认授予的,返回的结果都是授权。

需要说明的是,在本发明实施例提供的权限适配方法的一种可实现方式中,当用户的处理结果是拒绝授权,且用户选择当再次需要调用客户端权限时,不再提醒权限申请提示信息,具体地可以是:当处理结果为选择拒绝选项、且选择不再提醒选项时,客户端无权使用客户端权限而异常运行,并且,客户端再次调用权限时,直接确定客户端无权使用客户端权限而异常运行,不再动态地向操作系统申请客户端权限。

对于Android 6.0以上版本的操作系统,动态权限的申请流程会产生好几个分支处理逻辑,在实际的应用过程中,这样不善于管理和维护。为了使实现过程(例如代码实现)更加整洁和更易于维护,可以将动态权限申请的过程进行封装,建立权限申请接口和回调接口,在客户端需要调用客户端权限时,通过权限申请接口申请客户端权限,并通过回调接口,返回对申请客户端权限的处理结果。

具体地,新建一个基类activity用于权限申请和回调,然后在activity外包装管理层,限制调用的入口和出口,对于外部暴露唯一的入口和出口,这样对于外部逻辑代码需要调用权限时,将变得异常简单。同时,由于将权限申请封装在了管理类中,对于Android 6.0以下版本的操作系统也将没有任何引用,在管理类中对于低于Android 6.0版本的操作系统的权限申请请求,直接回调全部已授权即可,实现了权限申请过程对Android 6.0以上版本和低于Android 6.0版本的操作系统的兼容。

动态申请权限的过程,可以在客户端需要客户端权限时,通过封装后的权限申请入口向操作系统申请权限,以及通过权限申请的出口返回处理结果,即实现回调。

Android6.0将常用到的权限分为两种,普通权限和敏感权限,在实际的应用过程中,普通权限是可以不需要动态申请的,但是敏感权限是需要动态申请。需要说明的是,无论普通权限还是敏感权限,都需要在Manifest中列出来,Manifest是Android系统的清单文件,需要将所需要的所有权限都首先在这里声明,后续动态申请时需要再进行具体地处理,如果没有先在这里申明,后面却要使用这个权限,系统会因为找不到这个权限的声明(注册),导致客户端崩溃。下面分别对普通权限和敏感权限进行详细说明。

1)普通权限(Normal permissions):不会泄露用户隐私,同时也不会导致安全问题。这类客户端权限只需要在Manifest列出来,之后,操作系统会自动赋给客户端权限。具体地,普通权限包括访问网络状态的权限ACCESS_NETWORK_STATE、ACCESS_NOTIFICATION_POLICY、访问无线网络状态信息的权限ACCESS_WIFI_STATE、连接到已配对的蓝牙设备的权限BLUETOOTH、发现和配对蓝牙设备的权限BLUETOOTH_ADMIN等。

2)敏感权限(Dangerous permissions):与普通权限对应,可能会影响用户的隐私,存储数据等,比如拍照、存储、通讯录、地理GPS等,这类权限需要在Manifest列出来,在需要的时候动态申请。具体地,敏感权限包括:获取用户日历数据的权限CALENDAR、拍照的权限CAMERA、获取用户联系人数据的权限CONTACTS、获取地理位置的权限LOCATION、获取通讯录的权限PHONE、获取传感信息的权限SENSORS、对短信操作的权限SMS、存储数据的权限STORAGE等等。另外,敏感权限的请求是按照分组进行提醒的,并非仅仅针对一条,例如通讯录的读权限与写权限,只要一个权限申请即可获到。

对客户端权限的声明,以使后续在需要客户端权限时,对客户端权限进行动态申请,系统不会因为找不到这个权限的声明,而导致客户端崩溃。

本发明实施例还提供了一种权限适配装置,图2为本发明实施例提供的权限适配装置的结构示意图,参照图2对本发明实施例提供的权限适配装置进行详细说明,包括:

接收模块201,用于实时接收并保存系统广播信息,其中,系统广播信息在客户端权限的授权情况发生改变时获得。

判断模块202,用于在调用客户端权限时,根据客户端权限对应的最新系统广播信息,判断客户端是否被授权使用客户端权限。

请求模块203,用于判断客户端无权使用客户端权限时,向操作系统发送权限申请,以使操作系统向用户提供权限申请提示信息。

处理模块204,用于接收权限申请提示信息的处理结果,并根据处理结果,对应地确定客户端有权使用客户端权限、或者客户端无权使用客户端权限。

本发明实施例提供的权限适配装置,通过实时接收系统广播信息,并在客户端调用客户端权限时,根据该系统广播信息,通过判断客户端是否被授权使用客户端权限,实时地检查客户端权限的授权情况;然后,判断客户端无权使用客户端权限时,向操作系统发送权限申请,以使操作系统向用户提供权限申请提示信息;最后,接收权限申请提示信息的处理结果,并根据处理结果,对应地客户端利用客户端权限正常运行、或者无权使用客户端权限而异常运行。通过本发明实施例提供的权限适配装置,可以简化权限适配的过程,提高权限适配的效率。

可选的,本发明实施例提供的权限适配装置中判断模块202包括:

第一确定子模块,用于在系统广播信息中客户端权限的授权设置打开时,确定客户端权限被授权。

第二确定子模块,用于在系统广播信息中客户端权限的授权设置关闭时,确定客户端权限未被授权。

可选的,本发明实施例提供的权限适配装置中,权限申请提示信息包括权限申请提示对话框,其中,权限申请提示对话框包括:允许选项、拒绝选项和不再提醒选项。

可选的,本发明实施例提供的权限适配装置中处理模块204包括:

第一处理子模块,用于在处理结果为允许客户端使用客户端权限时,确定客户端有权使用客户端权限。

第二处理子模块,用于在处理结果为拒绝客户端使用客户端权限时,确定客户端无权使用客户端权限。

可选的,本发明实施例提供的权限适配装置中,第二处理子模块具体用于当处理结果为选择拒绝选项、且选择不再提醒选项时,客户端无权使用客户端权限,并且,客户端再次调用权限时,直接确定客户端无权使用客户端权限。

可选的,本发明实施例提供的权限适配装置还包括:

封装模块,用于建立权限申请接口和回调接口,在客户端需要调用客户端权限时,通过权限申请接口申请客户端权限,并通过回调接口,返回对申请客户端权限的处理结果。

可选的,本发明实施例提供的权限适配装置中,客户端权限包括:影响用户隐私的敏感权限。

需要说明的是,本发明实施例的装置是应用上述权限适配方法的装置,则上述权限适配方法的所有实施例均适用于该装置,且均能达到相同或相似的有益效果。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1