Android 6.0权限管理与申请
2017-10-30 15:27
148 查看
android6.0之后为了保护用户隐私,一些权限是需要在程序运行时动态检测并需要用户手动设置是否给与这些权限。
权限分为:
normal permissions:在清单文件中添加就行了。
dangerous permissions:即使在清单文件中添加了,也需要在运行时通过用户授权。
下面看下dangerous permissions有哪些:
这些权限组里面有很多权限,只要该权限组中有一个权限被allow,那么该组的所有权限都会被allow。
具体使用:
一、在第一次需要dangerous权限的地方检查权限是否授权:
PackageManager.PERMISSION_GRANTED表示已授权。
PackageManager.PERMISSION_DENIED表示未授权。
二、申请授权:
第一个参数:activity对象;
第二个参数:需要申请授权的权限数组;
第三个参数:用于 回调时候检测;
通过第二个参数可以看出可以一次性申请多个权限
三、处理权限申请的回调:
以上就是权限申请的步骤了,然后添加几个api介绍:
这个方法的作用是在上次用户已经拒绝这个权限申请后再次需要申请这个权限是,需要给用户一个解释,向用户展示一个提示框为什么需要这个权限。
那么合在一起的写法就是:
如果这个权限没有获取,先判断这个权限是否之前被拒绝过,如果拒绝过就弹个解释框,如果没拒绝过就去申请这个权限。然后在申请权限的回调中去坐相应的业务处理。
封装:也是借鉴hongyang和其他大神的博客然后自己的理解之后的一些封装。
权限分为:
normal permissions:在清单文件中添加就行了。
dangerous permissions:即使在清单文件中添加了,也需要在运行时通过用户授权。
下面看下dangerous permissions有哪些:
group:android.permission-group.CONTACTS permission:android.permission.WRITE_CONTACTS permission:android.permission.GET_ACCOUNTS permission:android.permission.READ_CONTACTS group:android.permission-group.PHONE permission:android.permission.READ_CALL_LOG permission:android.permission.READ_PHONE_STATE permission:android.permission.CALL_PHONE permission:android.permission.WRITE_CALL_LOG permission:android.permission.USE_SIP permission:android.permission.PROCESS_OUTGOING_CALLS permission:com.android.voicemail.permission.ADD_VOICEMAIL group:android.permission-group.CALENDAR permission:android.permission.READ_CALENDAR permission:android.permission.WRITE_CALENDAR group:android.permission-group.CAMERA permission:android.permission.CAMERA group:android.permission-group.SENSORS permission:android.permission.BODY_SENSORS group:android.permission-group.LOCATION permission:android.permission.ACCESS_FINE_LOCATION permission:android.permission.ACCESS_COARSE_LOCATION group:android.permission-group.STORAGE permission:android.permission.READ_EXTERNAL_STORAGE permission:android.permission.WRITE_EXTERNAL_STORAGE group:android.permission-group.MICROPHONE permission:android.permission.RECORD_AUDIO group:android.permission-group.SMS permission:android.permission.READ_SMS permission:android.permission.RECEIVE_WAP_PUSH permission:android.permission.RECEIVE_MMS permission:android.permission.RECEIVE_SMS permission:android.permission.SEND_SMS permission:android.permission.READ_CELL_BROADCASTS
这些权限组里面有很多权限,只要该权限组中有一个权限被allow,那么该组的所有权限都会被allow。
具体使用:
一、在第一次需要dangerous权限的地方检查权限是否授权:
if (ContextCompat.checkSelfPermission( Activity activity, android.Manifest.permission.ACCESS_COARSE_LOCATION)!= PackageManager.PERMISSION_GRANTED){ //申请授权 }else{ // }
PackageManager.PERMISSION_GRANTED表示已授权。
PackageManager.PERMISSION_DENIED表示未授权。
二、申请授权:
ActivityCompat.requestPermissions( Activity activity, new String[]{android.Manifest.permission.ACCESS_COARSE_LOCATION}, int REQUEST_CODE);
第一个参数:activity对象;
第二个参数:需要申请授权的权限数组;
第三个参数:用于 回调时候检测;
通过第二个参数可以看出可以一次性申请多个权限
三、处理权限申请的回调:
@Override public void onRequestPermissionsResult( int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch(requestCode){ case REQUEST_CODE: { if (grantResults.length > 0 && grantResults[权限下标] == PackageManager.PERMISSION_GRANTED) { //说明该下标对应的权限申请成功 //有多少个权限需要申请,grantResults的长度就等于多少,且grantResults数组元素的值分别对应于每个权限申请的结果。 } else { //该权限申请失败 } return; } }
以上就是权限申请的步骤了,然后添加几个api介绍:
if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,Manifest.permission.READ_CONTACTS)) // Show an expanation to the user *asynchronously* -- don't block // this thread waiting for the user's response! After the user // sees the explanation, try again to request the permission. }
这个方法的作用是在上次用户已经拒绝这个权限申请后再次需要申请这个权限是,需要给用户一个解释,向用户展示一个提示框为什么需要这个权限。
那么合在一起的写法就是:
如果这个权限没有获取,先判断这个权限是否之前被拒绝过,如果拒绝过就弹个解释框,如果没拒绝过就去申请这个权限。然后在申请权限的回调中去坐相应的业务处理。
封装:也是借鉴hongyang和其他大神的博客然后自己的理解之后的一些封装。
相关文章推荐
- Android 6.0 动态权限申请管理 用户拒绝不再提示后再申请
- Android 6.0 运行时权限申请
- Android 跳往 魅族 小米权限管理自启动(6.0)
- Android 6.0 权限管理
- Android之6.0 权限申请封装
- android 6.0 权限申请工具
- Android 6.0 - 动态权限管理的解决方案
- android 6.0以上多权限管理
- Android 6.0 运行时权限管理最佳实践
- 通俗易懂,手把手教会你android 6.0后(兼容6.0之前版本)申请危险权限的方法
- Android 6.0 动态权限申请
- Android 6.0运行时权限管理
- Android 6.0权限管理
- android6.x运行时权限申请管理
- Android 6.0新权限系统权限管理
- android6.0的写入SD卡的权限申请
- Android 6.0动态权限申请
- Android权限管理原理(含6.0)
- Android 6.0 - 动态权限管理的解决方案
- android 6.0权限申请