关于安卓6.0的运行时权限
来源:互联网 发布:软件过程模型 编辑:程序博客网 时间:2024/04/30 12:33
关于安卓6.0的运行时权限,之前只需要再manifest清单中配置即可。6.0之后加入了运行时权限。
参考文章:http://droidyue.com/blog/2016/01/17/understanding-marshmallow-runtime-permission/
以拨打电话为例:之前只需要再manifest清单中配置如下权限:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.looker.test"> <!--拨打电话权限--> <uses-permission android:name="android.permission.CALL_PHONE"/>
然后遇到的问题是,在Android6.0目标平台下,即便已经添加了打电话的权限,运行时依然会报错安全异常:权限被拒绝。
可以在代码中加入系统版本判断,如果6.0及以上需要获取运行时权限;
/*** * 判断权限 */ private void checkPermission() { //判断手机版本号是否6.0 if(Build.VERSION.SDK_INT >= 23){ // 检查是否获得了权限(Android6.0运行时权限) if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED){ // 没有获得授权,申请授权 if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.CALL_PHONE)) { // 返回值: // 如果app之前请求过该权限,被用户拒绝, 这个方法就会返回true. // 如果用户之前拒绝权限的时候勾选了对话框中”Don’t ask again”的选项,那么这个方法会返回false. // 如果设备策略禁止应用拥有这条权限, 这个方法也返回false. // 弹窗需要解释为何需要该权限,再次请求授权 Toast.makeText(getActivity(), "请授权!", Toast.LENGTH_LONG).show(); // 帮跳转到该应用的设置界面,让用户手动授权 Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); Uri uri = Uri.fromParts("package", getActivity().getPackageName(), null); intent.setData(uri); startActivity(intent); }else{ // 不需要解释为何需要该权限,直接请求授权 ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.CALL_PHONE}, 0); } }else { // 已经获得授权,可以打电话 callPhone(); } }else { callPhone(); } } /*** * 拨打电话 */ private void callPhone() { Intent intent = new Intent(); intent.setAction(Intent.ACTION_CALL); intent.setData(Uri.parse("tel: 13675082546")); startActivity(intent); }
0 0
- 关于安卓6.0的运行时权限
- 安卓6.0运行时权限解析
- 安卓6.0运行时权限处理
- 关于安卓6.0的权限笔记
- 简化安卓6.0运行时权限代码
- 安卓6.0运行时权限,终极答案
- 安卓6.0运行时权限处理方案
- 安卓6.0在Fragment申请运行时权限
- 安卓学习笔记--- Android 6.0运行时权限的申请使用及EasyPermissions的使用
- Android M 新的运行时权限开发者需要知道的一切 (安卓6.0新权限系统)
- 安卓学习笔记---聊一聊Android 6.0的运行时权限
- 关于安卓6.0权限的动态获取
- 安卓6.0新特性在Fragment申请运行时权限
- 一个关于安卓apk权限的问题
- 安卓6.0权限
- 解决安卓6.0拨打电话时的权限问题
- 安卓入门:获取危险权限——运行时权限处理
- 安卓6.0的权限管理
- 时序图的组成
- 机器学习笔记五:广义线性模型(GLM)
- poj1743 Musical Theme【解法一】
- 单链表的创建、取数据、数据添加、数据插入、数据删除
- Scrapy源码分析(二):Setting相关类定义
- 关于安卓6.0的运行时权限
- vim 和ctags的简单使用
- Google官方推荐MVP基础示例学习总结
- 蓝桥杯 国庆星期日
- win 10 设置透明图表显示为黑色方块问题
- c语言标准字符串函数的使用
- 雾霾太重?深度神经网络教你如何图像去雾
- 登录界面 记住密码
- [数理统计]先验概率、似然、后验概率