[https://developer.android.com...]
https://shoewann0402.github.io/2019/03/17/android-q-beta-scoped-storage/(https://developer.android.com...
permission-group
给相关的权限声明一个逻辑上的分组名称。独立的权限要通过元素的permissionGroup属性来加入权限分组。同一分组的中成员会一起展现在用户的界面中。
同一组的任何一个权限被授权了,其他权限也自动被授权。例如,一旦WRITE__CONTACTS__被授权了,__app__也有__READ__CONTACTS和GET_ACCOUNTS了。

normal:低风险权限,只要申请了就可以使用(在AndroidManifest.xml中添加标签),安装时不需要用户确认;
dangerous:高风险权限,安装时需要用户的确认才可使用;
signature:只有当申请权限的应用程序的数字签名与声明此权限的应用程序的数字签名相同时(如果是申请系统权限,则需要与系统签名相同),才能将权限授给它;
signatureOrSystem:签名相同,或者申请权限的应用为系统应用(在system image中)

Dangerous Permissions:

group:com.google.android.gms.permission.CAR_INFORMATION  permission:com.google.android.gms.permission.CAR_VENDOR_EXTENSION  permission:com.google.android.gms.permission.CAR_MILEAGE  permission:com.google.android.gms.permission.CAR_FUELgroup:android.permission-group.CONTACTSgroup:android.permission-group.PHONEgroup:android.permission-group.CALENDARgroup:android.permission-group.CALL_LOGgroup:android.permission-group.CAMERAgroup:android.permission-group.UNDEFINED  permission:android.permission.READ_SMS  permission:android.permission.READ_CALENDAR  permission:android.permission.READ_CALL_LOG  permission:android.permission.ACCESS_FINE_LOCATION  permission:android.permission.ANSWER_PHONE_CALLS  permission:android.permission.RECEIVE_WAP_PUSH  permission:android.permission.BODY_SENSORS  permission:android.permission.READ_PHONE_NUMBERS  permission:android.permission.RECEIVE_MMS  permission:android.permission.RECEIVE_SMS  permission:android.permission.READ_EXTERNAL_STORAGE  permission:android.permission.ACCESS_COARSE_LOCATION  permission:android.permission.READ_PHONE_STATE  permission:android.permission.SEND_SMS  permission:android.permission.CALL_PHONE  permission:android.permission.WRITE_CONTACTS  permission:android.permission.ACCEPT_HANDOVER  permission:android.permission.CAMERA  permission:android.permission.WRITE_CALENDAR  permission:android.permission.WRITE_CALL_LOG  permission:android.permission.USE_SIP  permission:android.permission.PROCESS_OUTGOING_CALLS  permission:android.permission.READ_CELL_BROADCASTS  permission:android.permission.GET_ACCOUNTS  permission:android.permission.WRITE_EXTERNAL_STORAGE  permission:android.permission.ACTIVITY_RECOGNITION  permission:android.permission.RECORD_AUDIO  permission:android.permission.READ_CONTACTS  permission:android.permission.ACCESS_BACKGROUND_LOCATION  permission:android.permission.ACCESS_MEDIA_LOCATION  permission:com.android.voicemail.permission.ADD_VOICEMAILgroup:android.permission-group.ACTIVITY_RECOGNITIONgroup:android.permission-group.SENSORSgroup:android.permission-group.LOCATION  permission:com.google.android.gms.permission.CAR_SPEEDgroup:android.permission-group.STORAGEgroup:com.sina.weibo.permission-group  permission:com.sina.weibo.permission.USERgroup:android.permission-group.MICROPHONEgroup:android.permission-group.SMSungrouped:  permission:com.huawei.hms.permission.ACTIVITY_RECOGNITION  permission:com.google.android.providers.talk.permission.WRITE_ONLY  permission:org.codeaurora.permission.POWER_OFF_ALARM  permission:com.qualcomm.permission.USE_EMBMS_SERVICE  permission:com.google.android.providers.talk.permission.READ_ONLY

动态权限适配

Normal Permission:写在xml文件里,那么App安装时就会默认获得这些权限,即使是在Android6.0系统的手机上,用户也无法在安装后动态取消这些normal权限,这和以前的权限系统是一样的,不变。

Dangerous Permission:还是得写在xml文件里,但是App安装时具体如果执行授权分以下几种情况:
1、targetSDKVersion < 23 & API(手机系统) < 6.0 :安装时默认获得权限,且用户无法在安装App之后取消权限。
3、targetSDKVersion < 23 & API(手机系统) >= 6.0 :安装时默认获得权限,但是用户可以在安装App完成后动态取消授权( 取消时手机会弹出提醒,告诉用户这个是为旧版手机打造的应用,让用户谨慎操作 )。

2、targetSDKVersion >= 23 & API(手机系统) < 6.0 :安装时默认获得权限,且用户无法在安装App之后取消权限。

4、targetSDKVersion >= 23 & API(手机系统) >= 6.0 :安装时不会获得权限,可以在运行时向用户申请权限。用户授权以后仍然可以在设置界面中取消授权,用户主动在设置界面取消后,在app运行过程中可能会出现crash

申请权限一般通过代理的Activity申请
代理Activity
requestPermissions申请
onRequestPermissionResult 接收结果并回调

// 基础判断权限方法public abstract int checkPermission(@NonNull String permission, int pid, int uid);// 当前进程内判断权限的方法,如果在IPC内,直接返回FAILpublic abstract int checkCallingPermission(@NonNull String permission);// IPC内判断权限的方法public abstract int checkSelfPermission(@NonNull String permission);// 上面两种方法的结合,只想判断当前进程内权限,不要使用这个方法,会有安全性问题public abstract int checkCallingOrSelfPermission(@NonNull String permission);// 判断是否可以弹窗public boolean shouldShowRequestPermissionRationale(@NonNull String permission) {

自定义权限

    

更多相关文章

  1. android 跳转到系统相关应用的方法
  2. Android调用系统相机拍摄视频以及获取缩略图
  3. Android Donut 系统烧写到开发板,脱离NFS启动
  4. 文件系统中的保留空间
  5. Android中调用系统函数查找联系人
  6. android 改变系统默认动态壁纸
  7. 【Android】遍历系统中所有应用程序

随机推荐

  1. Android(安卓)ImageView的scaleType & se
  2. Android(安卓)Studio报错 (androidx.recy
  3. android_常用UI控件_02_EditText_01添加
  4. 『ANDROID』Android实现圆形的图片边角
  5. android 浮窗
  6. android NDK 开发
  7. android读取SDCard任意路径下的文件
  8. Android(安卓)读取XML的两种方法。
  9. Android(安卓)倒影实现算法
  10. Ubuntu 12.04 Desktop 版本编译 Android(