Android 6.0运行时权限处理

6.0前后权限处理的变化

  • Before:安装时处理权限
  • After:运行时根据需求请求权限(只针对隐私权限)
    </br>

权限处理

// ------------------------------------- 检查权限 -------------------------------------
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.RECORD_AUDIO)) {
    // 已经授权
} else {
    // 未授权
}

// ------------------------------------- 请求权限 -------------------------------------
// 调用后弹出系统权限处理窗口,由用户决定是否授权
// 拒绝授权并选了“不再询问”后以后调用requestPermissions则不会弹出窗口
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.RECORD_AUDIO}, REQUEST_CODE); 

// ------------------------------------- 请求回调 ------------------------------------
/**
 * 参数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);
}

// ------------------------------------- 权限解释 ------------------------------------
// 仅仅一种情况下为true,就是当用户没有完全拒绝的时候(拒绝了但没选“不再询问”)
ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.RECORD_AUDIO)

</br>

使用Rxjava处理权限的开源项目:RxPermissions

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容