Android 6.0(M) 获得权限请求问题
2015-11-04 12:56
525 查看
Android 6.0权限请求问题
众所周知,android 6.0发布之后好多应用装上都用不了,原因可能最多的就是权限问题google将应用的权限重新定义,归用户管理。那么当应用没有获得权限的时候就会出现报错。不过对于之前的应用google也做了妥协,API 23 以下版本可以默认获取到应用权限,但是用户可以在设置中去关闭权限,想必如果用户关闭权限之后的错误就避免不了了。那么现在如何解决这个问题,6.0系统的优化还是很多的就内存管理及电池管理还是很牛X的,所以6.0推送之后想必很多厂商会跟进ROM镜像。总之我们必须得要遵从google的规则。无论你是之前的应用还是后续的应用都应该改一下。废话不多说--如何修改好你的应用代码。
第一步
找一部原生6.0系统的手机,装上你的应用,打开设置看一下你的应用权限都调用了那些,然后找出从哪里调用的代码,我这里就举一个简单的例子拍照权限。
我们去改跳系统相机时候那段代码,
<span style="font-size:24px;color:#3333ff;">startActivityForResult( new Intent(MediaStore.ACTION_IMAGE_CAPTURE).putExtra( MediaStore.EXTRA_OUTPUT, Uri.fromFile(cameraFile)), 1);</span>
这段代码是跳到相机拍照页面,然后之前加一句判断语句。
<pre name="code" class="java"> int MY_PERMISSIONS_REQUEST_CAMERA =10011;
/**android 6.0 权限申请**/ if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { //请求权限 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, MY_PERMISSIONS_REQUEST_CAMERA); //判断是否需要 向用户解释,为什么要申请该权限 ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_CONTACTS); } else { startActivityForResult( new Intent(MediaStore.ACTION_IMAGE_CAPTURE).putExtra( MediaStore.EXTRA_OUTPUT, Uri.fromFile(cameraFile)), 1); }上面那句判断应用有没有获取到权限。然后我们在系统提示弹出框回掉里面处理用户的选择结果
@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); //权限申请结果 if (requestCode == MY_PERMISSIONS_REQUEST_CAMERA) { for (int index = 0; index < permissions.length; index++) { switch (permissions[index]) { case Manifest.permission.CAMERA: if (grantResults[index] == PackageManager.PERMISSION_GRANTED) { /**用户已经受权*/ startActivityForResult( new Intent(MediaStore.ACTION_IMAGE_CAPTURE).putExtra( MediaStore.EXTRA_OUTPUT, Uri.fromFile(cameraFile)), 1); } else if (grantResults[index] == PackageManager.PERMISSION_DENIED) { /**用户拒绝了权限*/ T.showShort("应用没有拍照权限,请授权!"); } else { T.showShort("应用没有拍照权限,请授权!"); } break; } } } }
这样就好了我们的拍照权限就会交给用户处理了
最后给大家一点资料https://github.com/hotchemi/PermissionsDispatcher
相关文章推荐
- Android实现自定义带文字和图片的Button
- Android旋转屏幕不销毁数据的方法
- Android硬件抽象层(HAL)概要介绍和学习计划
- Android Camera 调用流程总结
- android模拟器与PC的端口映射(转)
- android studio annotation 配置过程
- Ubuntu 15.10 x64 安装 Android SDK(转)
- Android进阶之底部导航(RadioButton&Fragment&ViewPager)
- Android图片特效处理(像素处理)
- Android编程中号码匹配位数修改的方法
- Android实用小组件之QuickContactBadge
- Android Camera HAL浅析
- Android sqlite工具类
- Android编程中Perferences的用法实例分析
- Android常用错误解决汇总
- android输入法操控-关闭开启...
- Android项目开发中务必注意的相关问题
- Android 定时任务过程详解
- android代码开发规范
- Android之禁用系统栏(StatusBar)