Android 6.0 动态请求权限
2016-12-06 08:45
465 查看
Android 6.0 动态请求权限
描述:*Android 应用在访问额外的资源或信息时,需要请求相应权限。根据权限的敏感性,系统可能会自动授予权限,或者由用户对请求进行许可。Android6.0及以上应用除了在清单文件中声明权限,敏感权限还需要在用户使用时动态授予。官方定义了普通和危险权限,经测试发现部分手机厂商的敏感权限会有所差异*。问题:应用中用到 READ_PHONE_STATE 权限来获取设备ID,在华为、小米的6.0系统的手机上运行都可以正常获取,然而在Nexus5X上获取失败而导致应用闪退。
原因:华为、小米等系统会默认允许该权限,而官方定义该权限为危险权限默认不被允许。
解决:
1,将 targetSdkVersion 版本号调整为 23 以下,这样应用不需要在运行时请求权限,系统会默认允许清单文件中所有权限。
2,在应用中向用户动态请求权限,请求方式如下:
private static final int PERMISSION_REQUEST_COARSE_LOCATION = 1; @Override protected void onCreate(Bundle savedInstanceState) { ...... if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { // Android M Permission check if (this.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, PERMISSION_REQUEST_COARSE_LOCATION); } } } @Override public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { switch (requestCode) { case PERMISSION_REQUEST_COARSE_LOCATION: if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { // TODO request success } break; } }
用如上这种方式处理非常的繁琐,所以笔者决定采用这个 第三方库 来处理这个事情。
关于 第三方库 的使用与说明待续……
相关文章推荐
- Android 6.0系统动态请求系统相机和读取手机存储权限
- android发送短信填入手机号码,6.0动态请求权限拨打电话
- android 实现兼容6.0与5.0动态请求权限
- Android基于注解的6.0权限动态请求框架详解
- Android 6.0开始动态请求权限
- 在Android 6.0 设备上动态获取权限
- Android 6.0 - 动态权限管理的解决方案
- android 6.0权限请求
- Android_在Android 6.0设备上动态获取权限
- Android 6.0权限管理,sdk>=23请求权限
- app在android 6.0或以上平台版本运行过程中请求权限
- Android 6.0: 动态权限管理的解决方案
- Android 6.0: 动态权限管理的解决方案
- Android 6.0(M) 获得权限请求问题
- Android 6.0 动态权限申请
- Android 6.0运行时权限请求示例
- 4.14-3 Android 6.0 请求权限
- Android 6.0 动态申请权限
- Android 6.0 动态权限 java反射
- Android 6.0 - 动态权限管理的解决方案