1.本技术涉及计算机技术领域,尤其涉及一种访问权限的确定方法、装置、设备和存储介质。
背景技术:
2.终端设备上安装有不同的应用,这些应用都在访问权限的自身沙盒中运行,如果应用需要用到沙盒以外的资源或信息,就需要声明权限并通过设置权限请求来获取所需访问沙盒以外的资源或信息的权限,即危险权限。
3.在现有技术中,请求权限的工作流为:在清单文件中声明权限,在运行到需要危险权限的业务时,检查当前应用是否已经获取了所需的权限,如果没有获取则申请权限最终需要运行系统权限提示,并在申请权限的页面中检查用户的响应。
4.然而,在实际应用中,仅提示向用户请求某个权限的授权,存在申请权限不规范,用户拒绝授予权限的问题。
技术实现要素:
5.本技术实施例提供一种访问权限的确定方法、装置、设备和存储介质,用以解决申请权限不规范,且用户容易拒绝授予权限的问题。
6.第一方面,本技术实施例提供一种访问权限的确定方法,应用于终端设备,所述终端设备上安装有应用程序,所述方法包括:
7.获取应用程序中至少一个目标访问权限,所述目标访问权限为未被用户授权的访问权限;
8.根据所述目标访问权限,在预设的配置项中确定出所述目标访问权限的配置信息,所述配置项包括:预设的多个访问权限的配置信息,所述配置信息包括:权限说明,所述权限说明指示所述访问权限在得到授权之后的用途;
9.在所述终端设备的页面显示所述目标访问权限的权限说明。
10.在第一方面一种可能的设计中,在所述获取应用程序中至少一个目标访问权限之后,所述方法还包括:
11.根据所述目标访问权限,在所述配置项中未确定出所述目标访问权限的权限说明,将所述配置项中默认的权限说明设置为所述目标访问权限的权限说明。
12.在第一方面另一种可能的设计中,所述配置信息还包括:多个业务逻辑的标识,所述业务逻辑指示响应于用户是否授权的选择操作而进行的业务流程,所述方法还包括:
13.在所述终端设备的页面显示所述多个业务逻辑对应的操作标识;
14.响应于用户的选择操作,在所述多个业务逻辑对应的操作标识中选择目标业务逻辑对应的操作标识;
15.根据所述目标业务逻辑对应的操作标识,执行所述目标业务逻辑。
16.在该种可能的设计中,所述业务逻辑的标识包括如下任一项:同意授权、拒绝授
权、拒绝授权并不再提醒。
17.在第一方面再一种可能的设计中,所述方法还包括:
18.若所述目标业务逻辑对应的操作标识为所述拒绝授权并不再提醒,所述终端设备的页面显示跳转选项,所述跳转选项用于提示用户跳转到所述应用程序的系统设置页来修改并获取所述目标访问权限;
19.响应于用户的跳转选项对应的操作,在用户确认授权后,执行所述同意授权对应的业务逻辑。
20.在第一方面还一种可能的设计中,所述获取应用程序中至少一个目标访问权限,包括:
21.调用权限判断接口,获取各个访问权限对应的返回值;
22.根据所述访问权限对应的返回值与所述应用程序定义的类型常数是否相等,确定所述访问权限是否被用户授权;
23.若所述访问权限对应的返回值与所述类型常数不相等,将所述访问权限记为目标访问权限。
24.在该种可能的设计中,在所述根据所述目标业务逻辑对应的操作标识,执行所述目标业务逻辑之后,所述方法还包括:
25.检测到碎片的运行状态和工作流的运行状态;
26.当所述碎片的运行状态和所述工作流的运行状态处于停止状态,清除内存开销。
27.第二方面,本技术实施例提供一种访问权限的确定装置,应用于终端设备,所述终端设备上安装有应用程序,所述装置包括:获取模块、处理模块和显示模块;
28.所述获取模块,用于获取应用程序中至少一个目标访问权限,所述目标访问权限为未被用户授权的访问权限;
29.所述处理模块,用于根据所述目标访问权限,在预设的配置项中确定出所述目标访问权限的配置信息,所述配置项包括:预设的多个访问权限的配置信息,所述配置信息包括:权限说明,所述权限说明指示所述访问权限在得到授权之后的用途;
30.所述显示模块,用于在所述终端设备的页面显示所述目标访问权限的权限说明。
31.在第二方面一种可能的设计中,所述处理模块,还用于根据所述目标访问权限,在所述配置项中未确定出所述目标访问权限的权限说明,将所述配置项中默认的权限说明设置为所述目标访问权限的权限说明。
32.在第二方面另一种可能的设计中,所述配置信息还包括:多个业务逻辑的标识,所述业务逻辑指示响应于用户是否授权的选择操作而进行的业务流程,所述显示模块,还用于在所述终端设备的页面显示所述多个业务逻辑对应的操作标识;
33.所述处理模块,还用于响应于用户的选择操作,在所述多个业务逻辑对应的操作标识中选择目标业务逻辑对应的操作标识,并根据所述目标业务逻辑对应的操作标识,执行所述目标业务逻辑。
34.在该种可能的设计中,所述业务逻辑的标识包括如下任一项:同意授权、拒绝授权、拒绝授权并不再提醒。
35.在第二方面再一种可能的设计中,所述处理模块,还用于:
36.若所述目标业务逻辑对应的操作标识为所述拒绝授权并不再提醒,所述终端设备
的页面显示跳转选项,所述跳转选项用于提示用户跳转到所述应用程序的系统设置页来修改并获取所述目标访问权限;
37.响应于用户的跳转选项对应的操作,在用户确认授权后,执行所述同意授权对应的业务逻辑。
38.在第二方面还一种可能的设计中,所述获取模块,具体用于:
39.调用权限判断接口,获取各个访问权限对应的返回值;
40.根据所述访问权限对应的返回值与所述应用程序定义的类型常数是否相等,确定所述访问权限是否被用户授权;
41.若所述访问权限对应的返回值与所述类型常数不相等,将所述访问权限记为目标访问权限。
42.在该种可能的设计中,所述处理模块,还用于:
43.检测到碎片的运行状态和工作流的运行状态;
44.当所述碎片的运行状态和所述工作流的运行状态处于停止状态,清除内存开销。
45.第三方面,本技术实施例提供一种终端设备,包括:处理器、存储器;
46.所述存储器存储计算机执行指令;
47.所述处理器执行所述计算机执行指令,使得所述终端设备执行如上述第一方面及各种可能的设计中所述的访问权限的确定方法。
48.第四方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上述第一方面及各种可能的设计中所述的访问权限的确定方法。
49.第五方面,本技术实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时用于实现如上述第一方面及各种可能的设计中所述的访问权限的确定方法。
50.本技术实施例提供的访问权限的确定方法、装置、设备和存储介质。该方法应用于终端设备,该终端设备上安装有应用程序,通过获取应用程序中至少一个目标访问权限,根据目标访问权限,在预设的配置项中确定出目标访问权限的配置信息,该配置项包括:预设的多个访问权限的配置信息,该配置信息包括权限说明,该权限说明指示访问权限在得到授权之后的用途,在终端设备的页面显示目标访问权限的权限说明。该技术方案从配置项中的权限说明出发,向用户展示申请权限的原因,以增加用户授权的可能性,并规范了申请权限的规则。
附图说明
51.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
52.图1为现有技术提供的访问权限的申请流程示意图;
53.图2为本技术实施例提供的访问权限的确定方法实施例一的流程示意图;
54.图3为本技术实施例提供的访问权限的确定方法实施例二的流程示意图;
55.图4为本技术实施例提供的访问权限的确定方法实施例三的流程示意图;
56.图5为本技术实施例提供的访问权限的确定装置的结构示意图;
57.图6为本技术实施例提供的终端设备的结构示意图。
58.通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
59.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
60.在介绍本技术的实施例之前,首先对本技术的背景技术进行解释说明:
61.每个安卓android应用都在访问权受限的沙盒中运行,如果应用需要使用自身沙盒以外的资源或信息,应用可以声明权限并通过设置权限请求来获取所需访问权限。普通权限可以通过在清单文件声明后直接使用,但需要获取危险权限(也叫运行时权限),如果应用安装在android 6.0或更高版本的设备上,则需要按照特定的工作流在运行时请求这些危险权限,包含检查用户是否已授权、检查是否需要显示申请理由、检查用户响应并做出对应反馈等。
62.在实际开发过程中,一方面,上述工作可能在执行规范程度上打折扣,忽略了处理其中某个步骤,导致申请权限流程的用户体验不佳,另一方面,可能由于业务复杂,导致工作流实现逻辑分散,不利于后续维护。
63.在现有技术中,存在一种android开发者平台,即图1为现有技术提供的访问权限的申请流程示意图,如图1所示,请求权限的工作流如下:
64.第1步、在清单文件中声明权限;
65.第2步、运行到危险业务时,需要获取所需权限;
66.第3步、检查当前应用是否获取所需权限,若否,执行4a;若是,执行7a;
67.第4a步、是否展示权限理由,若是,执行4b;若否,执行;
68.第4b步、向用户展示权限理由;
69.第5步、申请权限最终需要运行系统权限提示;
70.其中,该步骤下的执行逻辑结束,详见下述说明。
71.第6步、申请权限的页面中检查用户的响应,若响应,执行第7a步;若不响应,执行第7b步;
72.第7a步、运行危险业务;
73.第7b步、拒绝运行危险业务。
74.可选的,为了解决执行申请权限的步骤5和确认用户反馈的步骤6之间流程不连通的问题,第三方库rxpermissions提供了聚合申请权限和确认用户反馈的功能,即在连续的代码块中集中实现获取当前运行状态上下文、发起权限请求、运行系统权限请求提示和检查用户响应。
75.部分代码如下所示:
[0076][0077]
可选的,步骤4a和步骤4b不是工作流中强制执行的步骤,步骤3后直接跳到步骤5执行不影响申请权限和处理用户响应后继续执行业务逻辑,因此在实际开发中容易遗漏步骤4a和步骤4b的工作,带来的结果是申请权限时可能对用户没有明确说明使用权限的具体目的,这样一方面造成申请权限操作的不规范,另一方面也会提高用户拒绝权限的风险。
[0078]
进一步地,在执行申请权限的步骤5和确认用户反馈的步骤6之间,流程是没有直接联通的,即完成步骤5的代码在x文件中,而完成步骤6的代码在y文件中,其中y文件描述了一个页面(activity或fragment),而x文件可能是y文件所描述页面中的一个子模块,它们之间可能经过了多层模块之间的引用,这意味着在实际的开发过程中,二者的代码逻辑有可能是割裂的。
[0079]
而rxpermissions提供的权限申请方案在一定程度上解决了申请权限工作流流程割裂的问题,但对于向用户展示申请权限的理由等步骤同样可能被忽略,并且可能带来额外的内存开销。
[0080]
本技术针对上述技术问题,发明人的技术构思过程如下:在现有技术中,针对访问权限的授权理由,现有流程是可以直接过滤的,如果在流程的设计中,在申请权限时注入当前应用的上下文,通过上下文向系统查询需要通过工作流申请的权限,对全部需要申请的权限,通过上下文获取到当前应用创建的页面容器,在当前页面容器内创建不可见的容器以执行完整的权限申请流程申请并处理用户响应,申请权限的理由作为必选项,进行设置,抑或不设置按照默认理由,之后进行展示,便可以解决上述现有技术存在的技术问题。
[0081]
下面通过具体实施例对本技术的技术方案进行详细说明。需要说明的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本技术的实施例进行描述。
[0082]
图2为本技术实施例提供的访问权限的确定方法实施例一的流程示意图。如图2所示,该访问权限的确定方法应用于终端设备,且终端设备上安装有应用程序,该方法包括如下步骤:
[0083]
步骤21、获取应用程序中至少一个目标访问权限。
[0084]
其中,目标访问权限为未被用户授权的访问权限。
[0085]
在本步骤中,为了能够最大程度的使应用程序为用户提供更优的服务,就需要让
应用程序获取到能够访问不同目标路径等对应的访问权限,即在应用程序开启时,先判断应用程序所需的访问权限是否开启,进而确定出没有获得授权的访问权限,记为目标访问权限。
[0086]
可选的,目标访问权限需要获得用户的授权,才可以为应用程序的功能提供支持,这一方式也为访问权限的规范性提供了示例。
[0087]
可选的,目标访问权限的数量可以是一个或多个,本技术实施例可以并行支持同时申请一个或多个访问权限。
[0088]
在一种可能的实现中,该步骤有如下实现方法:
[0089]
第1步、调用权限判断接口,获取各个访问权限对应的返回值。
[0090]
具体的,执行context.checkselfpermission(string permission)接口依次获取各个访问权限对应的返回值。
[0091]
第2步、根据访问权限对应的返回值与应用程序定义的类型常数是否相等,确定访问权限是否被用户授权。
[0092]
具体的,应用程序定义的int类型常数packagemanager.permission_granted,判断int类型常数与上述返回值是否相等,从而确定访问权限是否已经被用户授权。
[0093]
第3步、若访问权限对应的返回值与类型常数不相等,将访问权限记为目标访问权限。
[0094]
具体的,如果访问权限对应的返回值与类型常数相等,说明该访问权限已经被用户授权,无需重复申请,如果访问权限对应的返回值与类型常数不相等,说明该访问权限已经未被用户授权,需要申请,即将未被用户授权的访问权限记为目标访问权限。
[0095]
步骤22、根据目标访问权限,在预设的配置项中确定出目标访问权限的配置信息。
[0096]
其中,配置项包括:预设的多个访问权限的配置信息,配置信息包括:权限说明,权限说明指示访问权限在得到授权之后的用途。
[0097]
在本步骤中,为了规范访问权限的申请,以便于用户可以了解访问权限的用途,可以在配置项中设置各个访问权限的用途,即权限说明。
[0098]
进一步地,当获得未被用户授权的访问权限—目标访问权限之后,在配置项中获取该目标访问权限对应的权限说明。
[0099]
例如,目标访问权限可以是“获取读取图库的权限”,其对应的权限说明可以是“该应用程序产生的图片保存至图库,以增加应用程序在下次调用图片时的流畅性、且节省流量”等。
[0100]
此外,根据目标访问权限,在配置项中未确定出目标访问权限的权限说明,将配置项中默认的权限说明设置为目标访问权限的权限说明。
[0101]
可选的,在应用程序的配置项中,技术人员没有预先设置目标访问权限的权限说明,此时,可以将配置项中默认的权限说明作为该目标访问权限的权限说明。
[0102]
具体的,上述配置项中的权限说明,预先设置的权限说明和默认的权限说明均可以在安卓统库manifest.permission下定义的访问权限和可选项(权限说明)。
[0103]
例如,权限说明弹窗的内容,设置后权限说明弹窗显示设置的文案,不设置显示默认的权限说明对应的说明内容;是否显示权限说明弹窗,默认显示权限说明弹窗,可以设置不显示;是否显示提示前往系统权限设置弹窗,默认显示前往系统权限设置弹窗,可以设置
不显示。
[0104]
步骤23、在终端设备的页面显示目标访问权限的权限说明。
[0105]
在本步骤中,从配置项中获取目标权限的权限说明之后,为了提高用户对目标权限的授权率,此时在终端设备的显示界面上显示该目标访问权限的权限说明。
[0106]
在一种可能的实现中,可以设置当前页面上下文创建唯一的fragment用于展示访问权限申请弹窗,显示权限说明。
[0107]
具体的,当目标访问权限(如,申请打开流量网络)未获得授权时,在终端设备的当前页面的弹窗中显示“申请打开流量网络”以及对应的权限说明(设备不联网,无法与其他用户进行游戏交互,只能访问单机版本的游戏,部分互动功能无法实现)。
[0108]
本技术实施例提供的访问权限的确定方法,该方法应用于终端设备,该终端设备上安装有应用程序,通过获取应用程序中至少一个目标访问权限,根据目标访问权限,在预设的配置项中确定出目标访问权限的配置信息,该配置项包括:预设的多个访问权限的配置信息,该配置信息包括权限说明,该权限说明指示访问权限在得到授权之后的用途,在终端设备的页面显示目标访问权限的权限说明。该技术方案从配置项中的权限说明出发,向用户展示申请权限的原因,以增加用户授权的可能性,并规范了申请权限的规则。
[0109]
在上述实施例的基础上,图3为本技术实施例提供的访问权限的确定方法实施例二的流程示意图。如图3所示,当配置信息还包括:多个业务逻辑的标识时,该访问权限的确定方法还包括:
[0110]
步骤31、在终端设备的页面显示多个业务逻辑对应的操作标识。
[0111]
其中,业务逻辑指示响应于用户是否授权的选择操作而进行的业务流程。
[0112]
在本步骤中,针对终端设备的页面上显示目标访问权限的权限说明之后,用户需要在页面上进行相应的操作,以决定对目标访问权限是否进行授权,而用户进行是否授权的决定,反馈到终端设备上时,终端设备的处理流程(业务逻辑)是不同的。
[0113]
可选的,业务逻辑的标识包括如下任一项:同意授权、拒绝授权、拒绝授权并不再提醒,也即在配置项中,预先设置有用户是否同意对目标访问权限进行授权对应的流程,用户不同的反馈对应的业务逻辑是不同的。
[0114]
在一种可能的实现中,在终端设备的页面上显示有“同意授权”、“拒绝授权”、“拒绝授权并不再提醒”等按键。
[0115]
步骤32、响应于用户的选择操作,在多个业务逻辑对应的操作标识中选择目标业务逻辑对应的操作标识。
[0116]
在本步骤中,根据页面上显示的业务逻辑的标识,以及针对目标访问权限的权限说明,用户选择“同意授权”、“拒绝授权”、或“拒绝授权并不再提醒”,也即目标业务逻辑对应的操作标识。
[0117]
步骤33、根据目标业务逻辑对应的操作标识,执行目标业务逻辑。
[0118]
在本步骤中,用于在终端设备的页面上选择目标业务逻辑的标识,并点击之后,终端设备进行目标业务逻辑的标识对应的操作。
[0119]
可选的,基于框架内创建的fragment所申请的权限弹窗,用户的选择让果也通过该fragment的onrequestpermissionsresult(int requestcode,string[]permissions,int[]grantresults)回调方法接收,根据获取到的处理结果如下所示:
[0120]
1、如果用户选择“同意授权”,执行granted方法;
[0121]
2、如果用户选择“拒绝授权”,执行denied方法并返回false参数;
[0122]
3、如果用户选择“拒绝授权并不再提醒”,执行denied方法并返回true参数。
[0123]
具体的,作为一种示例,当用户响应于访问权限申请的选择操作,对申请访问权限请求选择同意、拒绝或拒绝并不再提示后,将自动执行设置的对应方法,如下为部分代码:
[0124][0125]
例如,在在granted方法中设置同意访问权限申请后执行的业务逻辑,在denied方法中设置拒绝权限后执行的业务逻辑,同时,可以选择判断denied方法的参数为true,代表用户选择拒绝并不再提示,并设置对应的业务逻辑。
[0126]
可选的,若目标业务逻辑对应的操作标识为拒绝授权并不再提醒,终端设备的页面显示跳转选项,跳转选项用于提示用户跳转到应用程序的系统设置页来修改并获取目标访问权限,响应于用户的跳转选项对应的操作,在用户确认授权后,执行同意授权对应的业务逻辑。
[0127]
具体的,在配置项中,“拒绝授权并不再提醒”的业务逻辑为:提示用户是否需要跳转到当前应用程序的系统设置页来修改并获取所请求的访问权限。此外,当请求访问权限时,如果用户对某个访问权限选择了“拒绝授权并不再提醒”,同一应用再次向用户请求同一权限,系统将不再允许用户选择是否授权,将直接执行拒绝授权并不再提醒标识对应的业务逻辑。在此情况下,仅有用户主动在系统设置页进行修改当前应用对应的访问权限,以获得授权。此处增加系统设置页引导,提高用户授权的可能。
[0128]
应理解:该业务逻辑可以是默认在配置项中的,也可以被关闭。
[0129]
可选的,上述当用户对目标访问权限进行授权之后,执行同意授权之后对应的业务逻辑,也即应用程序正常启动,向用户提供图形用户界面等,以使用户体验该应用程序。
[0130]
在此步骤之后,终端设备还检测碎片的运行状态和工作流的运行状态;当碎片的运行状态和工作流的运行状态处于停止状态,清除内存开销。
[0131]
可选的,本实施例提供了包含感知页面生命周期能力的碎片(activity)和工作流(fragment),作为基类被所有业务层页面继承,推荐作为上下文被注入业务层,在感知到页面本身即将被系统回收内存时,清理在整个过程产生的内存开销。
[0132]
具体的,可以是使用订阅者模式创建框架内fragment后没有及时解除的订阅,感
知页面生命周期的监听器。
[0133]
可选的,在上述实施例的过程中,可以通过容器的方式,保存当前页面和申请权限实体的映射。通过上下文获取到当前页面后,尝试在容器中查找是否已经存在申请权限实体,如果存在,则直接使用该实体继续执行后续操作;如果不存在,则在当前页面创建一个透明fragment用于向系统申请权限,并保存到容器中。
[0134]
需要注意,该容器可以是一个普通的关键字key-值value映射表,也可以包含自动回收功能,即在映射的key已经被回收时,自动回收映射的value,以保证不会产生内存泄漏。
[0135]
此外,上下文context提供了关于应用环境全局信息的接口,这是一个抽象类,其实现由安卓系统提供。这里所描述的上下文除了context和继承于context的activity之外,也包含页面类型fragment。
[0136]
本技术实施例提供的访问权限的确定方法,通过在终端设备的页面显示多个业务逻辑对应的操作标识,并响应于用户的选择操作,在多个业务逻辑对应的操作标识中选择目标业务逻辑对应的操作标识,之后根据目标业务逻辑对应的操作标识,执行目标业务逻辑。该技术方案中,从不同用户操作对应的业务逻辑出发,针对用户选择,应用程序可以继续执行相应的流程。
[0137]
在上述实施例的基础上,图4为本技术实施例提供的访问权限的确定方法实施例三的流程示意图。如图4所示,对本技术实施例的设计步骤进行概括简述,该访问权限的确定方法包括如下步骤:
[0138]
第1步、需要申请访问权限时,注入当前页面上下文;
[0139]
其中,上下文提供了关于应用环境全局信息的接口,即一个抽象类,其实现由android系统提供。这里所描述的上下文除了context和继承于context的activity之外,也包含页面类型fragment。
[0140]
可选的,对于大多数android客户端应用程序的页面,在一般情况下的申请访问权限操作相对低频,因此可以采用懒加载的模式,在真正需要申请权限时才获取当前页面上下文,并基于此上下文完成申请访问权限的全部工作流。
[0141]
第2步、添加包含具体权限内容的配置项;
[0142]
可选的,申请访问权限前,需要添加包含具体权限内容的配置,包括必选的权限值,即android系统库manifest.permission下定义的权限,和可选项:
[0143]
其中,可选项包括:权限说明弹窗的内容,设置后权限说明弹窗现实设置的文案,不设置显示默认的说明内容;是否显示权限说明弹窗,默认显示权限说明弹窗,可以设置不显示;是否显示提示前往系统权限设置弹窗,默认显示前往系统权限设置弹窗,可以设置不显示。
[0144]
第3步、添加针对不同的用户响应,执行不同的业务逻辑;
[0145]
可选的,申请访问权限前,可以添加方法,当用户响应系统权限申请弹窗,对申请权限请求选择同意、拒绝或拒绝并不再提示后,将自动执行设置的对应方法。
[0146]
例如,本实施例可以在granted方法中设置同意权限后执行的业务逻辑,在denied方法中设置拒绝权限后执行的业务逻辑,同时,可以选择判断denied方法的参数为true,代表用户选择拒绝并不再提示,并设置对应的业务逻辑。
[0147]
在上述实施例中,将用户选择的方法作为目标业务逻辑。
[0148]
第4步、根据申请访问权限内容过滤掉已获取的访问权限;
[0149]
其中,本实施例包含一个容器,用于保存当前页面和申请权限实体的映射。通过上下文获取到当前页面后,尝试在容器中查找是否已经存在申请权限实体。
[0150]
可选的,如果存在,则直接使用该实体继续执行后续操作;如果不存在,则在当前页面创建一个透明fragment用于向系统申请权限,并保存到容器中。
[0151]
应理解:该容器可以是一个普通的key-value映射表,也可以包含自动回收功能,即在映射的key已经被回收时,自动回收映射的value,以保证不会产生内存泄漏。
[0152]
具体的实现为:如果本次申请的所有访问权限都已经被授权,直接执行步骤3中设置的granted方法;如果存在访问权限需要申请,对剩下的访问权限(目标访问权限)继续执行后续的流程。
[0153]
第5步、根据配置项说明申请访问权限的权限说明;
[0154]
可选的,该步骤的权限说明可以是第2步提供的权限说明弹窗的内容配置文案;也可以是方案内默认文案,根据申请的访问权限自动展示对应的权限说明。
[0155]
第6步、展示访问权限的权限说明;
[0156]
可选的,根据第1步注入的当前页面上下文创建唯一的fragment用于展示系统访问权限申请弹窗,并基于此执行权限申请的后续步骤。
[0157]
第7步、根据用户响应,执行不同的业务逻辑;
[0158]
可选的,基于框架内创建的fragment所申请的权限弹窗,用户的处理结果也通过该fragment的onrequestpermissionsresult(int requestcode,string[]permissions,int[]grantresults)回调方法接收,根据获取到的处理结果,具体为:
[0159]
1、如果用户选择同意授权,执行granted方法;
[0160]
2、如果用户选择拒绝授权,执行denied方法并返回false参数;
[0161]
3、如果用户选择拒绝授权并不再提醒,执行denied方法并返回true参数。
[0162]
其中,当用户选择拒绝授权并不再提醒时,可以通过第2步设置的显示提示前往系统权限设置弹窗,支持引导到系统设置页为应用授权。
[0163]
第8步、关闭当前页面,回收上述步骤产生的内存开销。
[0164]
可选的,本实施例提供了包含感知页面生命周期能力的activity和fragment,通过第1步将业务层上下文注入到访问权限申请独立的模块中,在感知到页面本身即将被系统回收内存时,清理在模块内产生的内存开销,具体包括:
[0165]
1、使用订阅者模式创建框架内fragment后没有及时解除的订阅;
[0166]
2、感知页面生命周期的监听器。
[0167]
本技术实施例提供的访问权限的确定方法,通过需要申请访问权限时,注入当前页面上下文,并添加包含具体权限内容的配置项,再添加针对不同的用户响应,执行不同的业务逻辑,之后根据申请访问权限内容过滤掉已获取的访问权限,并根据配置项说明申请访问权限的权限说明,接着展示访问权限的权限说明,之后根据用户响应,执行不同的业务逻辑,最后关闭当前页面,回收上述步骤产生的内存开销。该技术方案中,通过配置项中的访问权限的申请理由,规范申请权限的请求规则,并提高用户的授权率。
[0168]
在上述方法实施例的基础上,图5为本技术实施例提供的访问权限的确定装置的
结构示意图。如图5所示,该访问权限的确定装置,应用于终端设备,该终端设备上安装有应用程序,该装置包括:获取模块51、处理模块52和显示模块53;
[0169]
获取模块51,用于获取应用程序中至少一个目标访问权限,目标访问权限为未被用户授权的访问权限;
[0170]
处理模块52,用于根据目标访问权限,在预设的配置项中确定出目标访问权限的配置信息,配置项包括:预设的多个访问权限的配置信息,配置信息包括:权限说明,权限说明指示访问权限在得到授权之后的用途;
[0171]
显示模块53,用于在终端设备的页面显示目标访问权限的权限说明。
[0172]
在本技术实施例一种可能的设计中,处理模块52,还用于根据目标访问权限,在配置项中未确定出目标访问权限的权限说明,将配置项中默认的权限说明设置为目标访问权限的权限说明。
[0173]
在本技术实施例另一种可能的设计中,配置信息还包括:多个业务逻辑的标识,业务逻辑指示响应于用户是否授权的选择操作而进行的业务流程,显示模块53,还用于在终端设备的页面显示多个业务逻辑对应的操作标识;
[0174]
处理模块52,还用于响应于用户的选择操作,在多个业务逻辑对应的操作标识中选择目标业务逻辑对应的操作标识,并根据目标业务逻辑对应的操作标识,执行目标业务逻辑。
[0175]
在该种可能的设计中,业务逻辑的标识包括如下任一项:同意授权、拒绝授权、拒绝授权并不再提醒。
[0176]
在本技术实施例再一种可能的设计中,所述处理模块52还用于:
[0177]
若目标业务逻辑对应的操作标识为拒绝授权并不再提醒,终端设备的页面显示跳转选项,跳转选项用于提示用户跳转到应用程序的系统设置页来修改并获取目标访问权限;
[0178]
响应于用户的跳转选项对应的操作,在用户确认授权后,执行同意授权对应的业务逻辑。
[0179]
在本技术实施例还一种可能的设计中,获取模块51,具体用于:
[0180]
调用权限判断接口,获取各个访问权限对应的返回值;
[0181]
根据访问权限对应的返回值与应用程序定义的类型常数是否相等,确定访问权限是否被用户授权;
[0182]
若访问权限对应的返回值与类型常数不相等,将访问权限记为目标访问权限。
[0183]
在该种可能的设计中,处理模块52,还用于:
[0184]
检测到碎片的运行状态和工作流的运行状态;
[0185]
当碎片的运行状态和工作流的运行状态处于停止状态,清除内存开销。
[0186]
本技术实施例提供的访问权限的确定装置,可用于执行上述实施例中访问权限的确定方法对应的技术方案,其实现原理和技术效果类似,在此不再赘述。
[0187]
需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。此外这些模块全部
或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
[0188]
图6为本技术实施例提供的终端设备的结构示意图。如图6所示,该终端设备可以包括:处理器60、存储器61及存储在该存储器61上并可在处理器60上运行的计算机程序指令。
[0189]
其中,该终端设备可以是手机、电脑、平板等具有显示功能的设备。
[0190]
处理器60执行存储器61存储的计算机执行指令,使得处理器60执行上述实施例中的方案。处理器60可以是通用处理器,包括中央处理器cpu、网络处理器(network processor,np)等;还可以是数字信号处理器dsp、专用集成电路asic、现场可编程门阵列fpga或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0191]
存储器61通过系统总线与处理器60连接并完成相互间的通信,存储器61用于存储计算机程序指令。
[0192]
在一种可能的实现中,该终端设备还可以包括:显示器,该显示器用于显示终端设备的显示界面。
[0193]
系统总线可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。系统总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0194]
本技术实施例提供的终端设备,可用于执行上述实施例中访问权限的确定方法对应的技术方案,其实现原理和技术效果类似,在此不再赘述。
[0195]
本技术实施例还提供一种运行指令的芯片,该芯片用于执行上述实施例中访问权限的确定方法的技术方案。
[0196]
本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在终端设备上运行时,使得终端设备执行上述实施例中访问权限的确定方法的技术方案。
[0197]
本技术实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时用于执行上述实施例中访问权限的确定方法的技术方案。
[0198]
上述的计算机可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用终端设备能够存取的任何可用介质。
[0199]
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。
技术特征:
1.一种访问权限的确定方法,其特征在于,应用于终端设备,所述终端设备上安装有应用程序,所述方法包括:获取应用程序中至少一个目标访问权限,所述目标访问权限为未被用户授权的访问权限;根据所述目标访问权限,在预设的配置项中确定出所述目标访问权限的配置信息,所述配置项包括:预设的多个访问权限的配置信息,所述配置信息包括:权限说明,所述权限说明指示所述访问权限在得到授权之后的用途;在所述终端设备的页面显示所述目标访问权限的权限说明。2.根据权利要求1所述的方法,其特征在于,在所述获取应用程序中至少一个目标访问权限之后,所述方法还包括:根据所述目标访问权限,在所述配置项中未确定出所述目标访问权限的权限说明,将所述配置项中默认的权限说明设置为所述目标访问权限的权限说明。3.根据权利要求1或2所述的方法,其特征在于,所述配置信息还包括:多个业务逻辑的标识,所述业务逻辑指示响应于用户是否授权的选择操作而进行的业务流程,所述方法还包括:在所述终端设备的页面显示所述多个业务逻辑对应的操作标识;响应于用户的选择操作,在所述多个业务逻辑对应的操作标识中选择目标业务逻辑对应的操作标识;根据所述目标业务逻辑对应的操作标识,执行所述目标业务逻辑。4.根据权利要求3所述的方法,其特征在于,所述业务逻辑的标识包括如下任一项:同意授权、拒绝授权、拒绝授权并不再提醒。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:若所述目标业务逻辑对应的操作标识为所述拒绝授权并不再提醒,所述终端设备的页面显示跳转选项,所述跳转选项用于提示用户跳转到所述应用程序的系统设置页来修改并获取所述目标访问权限;响应于用户的跳转选项对应的操作,在用户确认授权后,执行所述同意授权对应的业务逻辑。6.根据权利要求1或2所述的方法,其特征在于,所述获取应用程序中至少一个目标访问权限,包括:调用权限判断接口,获取各个访问权限对应的返回值;根据所述访问权限对应的返回值与所述应用程序定义的类型常数是否相等,确定所述访问权限是否被用户授权;若所述访问权限对应的返回值与所述类型常数不相等,将所述访问权限记为目标访问权限。7.根据权利要求6所述的方法,其特征在于,在所述根据所述目标业务逻辑对应的操作标识,执行所述目标业务逻辑之后,所述方法还包括:检测到碎片的运行状态和工作流的运行状态;当所述碎片的运行状态和所述工作流的运行状态处于停止状态,清除内存开销。8.一种访问权限的确定装置,其特征在于,应用于终端设备,所述终端设备上安装有应
用程序,所述装置包括:获取模块、处理模块和显示模块;所述获取模块,用于获取应用程序中至少一个目标访问权限,所述目标访问权限为未被用户授权的访问权限;所述处理模块,用于根据所述目标访问权限,在预设的配置项中确定出所述目标访问权限的配置信息,所述配置项包括:预设的多个访问权限的配置信息,所述配置信息包括:权限说明,所述权限说明指示所述访问权限在得到授权之后的用途;所述显示模块,用于在所述终端设备的页面显示所述目标访问权限的权限说明。9.根据权利要求8所述的装置,其特征在于,所述处理模块,还用于:根据所述目标访问权限,在所述配置项中未确定出所述目标访问权限的权限说明,将所述配置项中默认的权限说明设置为所述目标访问权限的权限说明。10.根据权利要求8或9所述的装置,其特征在于,所述配置信息还包括:多个业务逻辑的标识,所述业务逻辑指示响应于用户是否授权的选择操作而进行的业务流程,所述显示模块,还用于在所述终端设备的页面显示所述多个业务逻辑对应的操作标识;所述处理模块,还用于响应于用户的选择操作,在所述多个业务逻辑对应的操作标识中选择目标业务逻辑对应的操作标识,并根据所述目标业务逻辑对应的操作标识,执行所述目标业务逻辑。11.根据权利要求10所述的装置,其特征在于,所述业务逻辑的标识包括如下任一项:同意授权、拒绝授权、拒绝授权并不再提醒。12.根据权利要求11所述的方法,其特征在于,所述处理模块,还用于:若所述目标业务逻辑对应的操作标识为所述拒绝授权并不再提醒,所述终端设备的页面显示跳转选项,所述跳转选项用于提示用户跳转到所述应用程序的系统设置页来修改并获取所述目标访问权限;响应于用户的跳转选项对应的操作,在用户确认授权后,执行所述同意授权对应的业务逻辑。13.根据权利要求8或9所述的装置,其特征在于,所述获取模块,具体用于:调用权限判断接口,获取各个访问权限对应的返回值;根据所述访问权限对应的返回值与所述应用程序定义的类型常数是否相等,确定所述访问权限是否被用户授权;若所述访问权限对应的返回值与所述类型常数不相等,将所述访问权限记为目标访问权限。14.根据权利要求13所述的装置,其特征在于,所述处理模块,还用于:检测到碎片的运行状态和工作流的运行状态;当所述碎片的运行状态和所述工作流的运行状态处于停止状态,清除内存开销。15.一种终端设备,包括:处理器、存储器及存储在所述存储器上并可在处理器上运行的计算机程序指令,其特征在于,所述处理器执行所述计算机程序指令时实现如上述权利要求1至7任一项所述的访问权限的确定方法。16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上述权利要求1至7任一项所述的访问权限的确定方法。
17.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时用于实现如上述权利要求1至7任一项所述的访问权限的确定方法。
技术总结
本申请提供一种访问权限的确定方法、装置、设备和存储介质。该方法应用于终端设备,该终端设备上安装有应用程序,通过获取应用程序中至少一个目标访问权限,根据目标访问权限,在预设的配置项中确定出目标访问权限的配置信息,该配置项包括:预设的多个访问权限的配置信息,该配置信息包括权限说明,该权限说明指示访问权限在得到授权之后的用途,在终端设备的页面显示目标访问权限的权限说明。该技术方案从配置项中的权限说明出发,向用户展示申请权限的原因,以增加用户授权的可能性,并规范了申请访问权限的规则。范了申请访问权限的规则。范了申请访问权限的规则。
技术研发人员:宋思亭 邓远铤
受保护的技术使用者:网易(杭州)网络有限公司
技术研发日:2021.12.02
技术公布日:2022/3/8