系统权限官网知识点

1、权限概述

如果应用在AndroidManifest.xml中申明了非危险权限,应用会自动授权,如果是危险权限,那么应用会通知用户主动授权该权限。android系统主动通知用户进行授权的方式取决于android系统版本以及应用的target sdk版本。

1.1 、API Level >= 23 && Target SDK >= 23

如果设备是android 6.0(api level 23)或者更高,并且应用target sdk是23或者更高,应用会在运行时申请权限。用户可以在任意时间取消权限,所以在应用每次使用某些危险权限相关的api时需要动态检测是否已经授权。

1.2 、API Level <= 22 OR Target SDK <= 22

如果设备是android 5.1.1(api level 22)或者更低,或者应用target sdk是22或者更低,系统会在安装时询问用户授权。如果有新的权限添加到应用的更新版本,那么在应用更新时会询问用户授权。一旦用户授权,那么用户取消授权的唯一方式就是卸载该应用。android提供的系统列表参见如下网址
权限列表
应用也可以定义和强制使用自定义权限

2、查看系统的权限

adb shell pm list permissions
adb shell pm list permissions -s 以表格的形式列出权限

3、Permission required to install unknown apps

对于target sdk 26及以上,通过接口方法安装apk包时,必须要申请REQUEST_INSTALL_PACKAGES权限,即

4、普通权限和危险权限

系统权限最常见的区分等级为危险权限和普通权限。
Dangerous permissions cover areas where the app wants data or resources that involve the user’s private information, or could potentially affect the user’s stored data or the operation of other apps.

5、权限组

所有单个的android危险系统权限都属于某个权限组。当设备为android 6.0(api level 23及以上时)并且应用的target sdk是23时:

  1. 当请求一个在AndroidManifest文件中定义的权限时,如果当前应用没有任何权限与该权限同在一个权限组,那么系统会显示一个弹窗向用户描述应用所申请的权限组。(弹窗不会显示具体的权限,而是描述该权限)。(the system just tells the user what permission groups the app needs, not the individual permissions.)

  2. 当请求一个在AndroidManifest文件中定义的权限时,如果当前应用有相关权限与该权限同在一个权限组, 那么系统会自动分配该权限给引用,而不会弹窗。例如,应用申请了读取联系人的权限,那么再申请写联系人的权限时系统会自动分配该权限。

6、危险权限组

危险权限组

7、自定义权限

为了强制使用自定义权限,首先必须在AndroidManifest.xml文件中用一个或多个元素申明。
例如,应用想控制其某个activity被其他应用启动activity权限申明如下:

8、参考

Android System Permissions

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章