美文网首页
Android6.0权限回顾

Android6.0权限回顾

作者: 牧悠 | 来源:发表于2017-04-13 22:57 被阅读0次

一、6.0权限介绍

Android6.0提交对权限进行了较大的优化,权限根据用户隐私区分两类:一般权限和运行时权限。
targetSdkVersion小于23的应用默认授予了所申请的所有权限,当targetSdkVersion大于23时,使用未授权的运行时权限,就会导致应用崩溃。将APP的targetSdkVersion设置低于23,在运行时不会崩溃,但只是一个应急处理,不是长久之计。

二、运行时权限介绍

用户可对运行时权限进行开关,当应用使用未授权运行时权限时,就需要动态进行权限申请。
运行时权限分为9个权限组,权限组打开后,该组下所有权限都能正常使用。


  1. 权限查询、申请
//检查权限
if (ContextCompat.checkSelfPermission(thisActivity,Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
    //申请提示
    if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
         Manifest.permission.READ_CONTACTS)) {
        /提示操作
    } else {
        //申请权限 
        ActivityCompat.requestPermissions(thisActivity,new String[]{Manifest.permission.READ_CONTACTS},REQUEST_CODE);
    }
}
  1. 处理回调
@Override
public void onRequestPermissionsResult(int requestCode,String permissions[], int[] grantResults) {
    switch (requestCode) {
    case REQUEST_CODE: 
        if (grantResults.length > 0&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
           //成功
        } else {
           //失败
        }
        break;
    }
}
  • 注意:
    Fragment中申请权限,不要使用ActivityCompat.requestPermissions, 直接使用Fragment的requestPermissions方法,否则会回调到Activity的onRequestPermissionsResult
    如果在Fragment中嵌套Fragment,在子Fragment中使用requestPermissions方法,onRequestPermissionsResult不会回调回来,建议使用getParentFragment().requestPermissions方法,
    这个方法会回调到父Fragment中的onRequestPermissionsResult

三、运行时权限框架使用

在开发过程中,使用如上代码来进行权限申请,重复代码量过多,所以下面介绍下开源框架
基于RxJava的运行时权限检测框架(个人倾向)
RxPermissions

RxPermissions rxPermissions = new RxPermissions(this); // where this is an Activity instance
Example : request the CAMERA permission (with Retrolambda for brevity, but not required)

// Must be done during an initialization phase like onCreate
rxPermissions
    .request(Manifest.permission.CAMERA)
    .subscribe(granted -> {
        if (granted) { // Always true pre-M
           // I can control the camera now
        } else {
           // Oups permission denied
        }
    });

Google官方的例子
android-RuntimePermissions

参考文献:感谢
Android 6.0 运行时权限处理

相关文章

网友评论

      本文标题:Android6.0权限回顾

      本文链接:https://www.haomeiwen.com/subject/qyuiattx.html