android 6.0动态权限问题
最近,我发现手机的6.0权限在小米手机上存在问题,我在网上搜了很多的代码,都没有解决这个问题,所以这里记录一下自己的android 6.0权限的解决代码,如果有问题,大家可以在网上自己在找找代码去解决,不过,我发现大部分是一样的。
1.通过设置build.gradle文件来适配android 6.0.
这个很简单,只要把targetSdkVersion设置为23一下就可以,这是告诉手机这个app不支持android 6.0动态权限,所以手机会在安装时给予app所需权限。不过也存在问题,因为这样无法使用到android 6.0之后的新的特性。所以这个解决代码不是很好
compileSdkVersion 24
buildToolsVersion "24.0.2"
defaultConfig {
applicationId "com.whoislcj.rxpermissions"
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
2.直接在代码申请动态权限。
从Android 6.0(API23)开始,当app运行时用户授予用户的权限,而不是在安装程序的时候。
系统权限分为2种,分别为normal和dangerous.
Normal permission:对于用户隐私没有危险的,在清单文件中申请就可以直接授权。
Dangerous permission:app需要访问用户的隐私信息等,即使在清单文件注册,也需要在运行是通过用户授权。
检查权限(check permission)
在android6.0及以上的sdk提供了一个检查权限的方法:ContextCompat.checkSelfPermission()。
int permission = ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.RECORD_AUDIO);
if (permission == PackageManager.PERMISSION_GRANTED) {
//表示已经授权
}
//PackageManager.PERMISSION_DENIED--->表示权限被否认了
如果在Activity中申请权限可以的调用:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { int permission = checkSelfPermission(Manifest.permission.RECORD_AUDIO);
}
请求权限
在Android 6.0及以上,如果检查没有权限,需要主动请求权限。在请求权限是会弹出一个对话框提示用户,是否授权。
请求权限的方法:requestPermissions()。在请求权限后会有一个回调方法onRequestPermissionsResult()。
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.RECORD_AUDIO}, 1);
//或者 在Activity的方法调用
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{Manifest.permission.RECORD_AUDIO},1);
}
/** * 参数1:requestCode-->是requestPermissions()方法传递过来的请求码。 * 参数2:permissions-->是requestPermissions()方法传递过来的需要申请权限 * 参数3:grantResults-->是申请权限后,系统返回的结果,PackageManager.PERMISSION_GRANTED表示授权成功,PackageManager.PERMISSION_DENIED表示授权失败。 * grantResults和permissions是一一对应的 */
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
这里主要是参考了网上别人的博客,觉得写得很好,所以直接来用,自己也不一定写得比别人明白。动态申请主要是使用ContextCompat.checkSelfPermission(Activity,权限);来检查权限,然后对应没有的权限,使用 ActivityCompat.requestPermissions(Activity, 权限数组, 请求码);进行动态申请。
这个解决代码基本实现了android的动态权限,不过我发现在小米 的note4会不停出现提示需要权限的问题。app每次启动都会提示需要录像,照相等权限,这个可能是小米手机的设置问题,我怎么也解决不了,所以大家用这个代码时必须注意小米 note4是否也存在一打开app就提示需要权限得 问题。
android 6.0权限问题就这样将完了。
就这么简单。
android 6.0动态权限问题相关推荐
- android 6.0权限库,Android 6.0动态权限适配
前言 最近项目发现比较多的问题是关于Android 6.0的问题,APP安装之后,在Android 6.0之后的系统,点击直接奔溃打不开,这是为什么昵?这就是Android 6.0以上的系统引入运行时 ...
- Android 6.0动态权限申请
Android 6.0动态权限申请 特别感谢: https://www.jianshu.com/p/2fe4fb3e8ce0 本文是在该文的基础上添加了类似自己的读后感才完成的. 我并不希望成为白求恩 ...
- Android 7.0动态权限大总结
本文讲的是Android 7.0动态权限大总结,应公司项目需求,做了下Android 7.0适配.对于我们程序员,适配7.0主要就是对手机本地文件的Uri做转换处理.注意红色字体,意思也就是说对于ht ...
- [Android] Android 6.0 动态权限申请看完就会写
Android 6.0 动态权限申请看完就会写 文章目录 Android 6.0 动态权限申请看完就会写 1. 起 2. 权限 3. 四个方法 4. 使用 5. 总结 1. 起 Android 的动态 ...
- Android 6.0动态权限(转)
转自:http://blog.csdn.net/uana_777/article/details/54136255 Part One 权限区分 Android 6.0 为了保护用户隐私,将一些权限的 ...
- Android 6.0 动态权限实战(一)------ Nexus7二代(WIFI版)4.4升级6.0-附带纯净刷机ROM福利!
最近一直忙于一个百万+客户的app客户端与Android4.4定制车机和车载的系统订单,都好久没有更新博客了, 今天一上来就 给大家发一个福利!哈哈,不要谢我,请叫我雷锋!这个博客我将分1-3篇来介绍 ...
- android 6.0动态权限的申请
一下9组权限需要动态申请//通讯录(读.写.查询)group:android.permission-group.CONTACTSpermission:android.permission.WRITE_ ...
- Android 6.0 动态权限申请
1. 概述 Android 6.0 (API 23) 之前应用的权限在安装时全部授予,运行时应用不再需要询问用户.在 Android 6.0 或更高版本对权限进行了分类,对某些涉及到用户隐私的权限可在 ...
- Android 6.0: 动态权限管理的解决方案
Android 6.0版本(Api 23)推出了很多新的特性, 大幅提升了用户体验, 同时也为程序员带来新的负担. 动态权限管理就是这样, 一方面让用户更加容易的控制自己的隐私, 一方面需要重新适配应 ...
最新文章
- 写了个牛逼的日志切面,甩锅更方便了!
- 在centos上通过yum直接安装最新版gcc和开发工具
- php用ajaxs上传图片_php+ajax实现图片文件上传功能实例
- 与图像处理、图像识别有关的学术机构或会议
- 实战SSM_O2O商铺_35【商品】商品编辑之View层的实现
- 几本对于笔试和面试有用的书
- linux 安装 php 5.2_Linux下安装PHP5.5
- app 缓存html页面,HTML5本地存储VS App缓存离线网站浏览
- 20+个很棒的Android开源项目
- HDOJ--1875--畅通工程再续
- 郑州大学远程教育学院C语言程序设计题库(二)
- python 超像素分割
- 【Ubuntu破解UltraEdit】破解UltraEdit
- emoji.php,简单的处理emoji的PHP类库
- 如何通俗的解释全微分?
- 8月书讯丨11本新上好书速览(计算机+经管)
- 商城app被攻击了之后我们应该怎么处理?
- 手游测试常见10个坑及填坑建议
- 漫谈程序员系列:怎么告别“混日子”
- C compiler cannot create executables问题