Android 6.0权限管理与申请
来源:互联网 发布:淘宝云客服门户 编辑:程序博客网 时间:2024/06/15 18:39
android6.0之后为了保护用户隐私,一些权限是需要在程序运行时动态检测并需要用户手动设置是否给与这些权限。
权限分为:
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_CONTACTSgroup: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_VOICEMAILgroup:android.permission-group.CALENDAR permission:android.permission.READ_CALENDAR permission:android.permission.WRITE_CALENDARgroup:android.permission-group.CAMERA permission:android.permission.CAMERAgroup:android.permission-group.SENSORS permission:android.permission.BODY_SENSORSgroup:android.permission-group.LOCATION permission:android.permission.ACCESS_FINE_LOCATION permission:android.permission.ACCESS_COARSE_LOCATIONgroup:android.permission-group.STORAGE permission:android.permission.READ_EXTERNAL_STORAGE permission:android.permission.WRITE_EXTERNAL_STORAGEgroup:android.permission-group.MICROPHONE permission:android.permission.RECORD_AUDIOgroup: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对象;
第二个参数:需要申请授权的权限数组;
第三个参数:用于 回调时候检测;
通过第二个参数可以看出可以一次性申请多个权限
三、处理权限申请的回调:
@Overridepublic 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和其他大神的博客然后自己的理解之后的一些封装。
阅读全文
0 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权限申请
- Android 6.0+ 权限申请
- android 6.0权限申请
- Android 6.0权限申请
- Android 6.0权限申请
- Android自定义权限与动态申请权限
- Android 6.0(API 23)及其以上动态申请的权限与申请权限的方法
- Android 6.0 动态权限申请管理 用户拒绝不再提示后再申请
- Android内存管理与申请
- Android 6.0在运行时申请权限解释与实例
- 企业部署bi商业智能分析系统的三大误区
- mysql收集
- 栈,队列
- 卡特兰数------2行n列排队问题
- 计算机网络一个简单过程
- Android 6.0权限管理与申请
- 百练+贪心,比较上下两周价格
- 写给自己的最后一封信
- 智能指针的循环引用和如何解决循环引用
- 文件收集工具Flume
- java 常用算法 “百钱买百鸡”
- 线程间通信(管道流)
- Servlet 实现验证码
- 数据结构--树--2