Android M 运行时权限管理
来源:互联网 发布:网络视频自己组装枪支 编辑:程序博客网 时间:2024/06/05 23:05
- 如果代码中的targetSdkVersion >=23的话都会有运行时权限管理
- 在代码中调用
checkSelfPermission(Manifest.permission.WRITE_CONTACTS)
方法来检查是否有某种权限,得到返回值:判断是否等于PackageManager.PERMISSION_GRANTED
:等于表示有该权限,不等于表示没有。
private void insertDummyContactWrapper() { int hasWriteContactsPermission = checkSelfPermission(Manifest.permission.WRITE_CONTACTS); if (hasWriteContactsPermission != PackageManager.PERMISSION_GRANTED) { if (!shouldShowRequestPermissionRationale(Manifest.permission.WRITE_CONTACTS)) { Toast.makeText(this, "do not remind me any more", Toast.LENGTH_SHORT).show(); } requestPermissions(new String[]{Manifest.permission.WRITE_CONTACTS}, REQUEST_CODE_ASK_PERMISSIONS); return; } afterGetPermission(); }
- 调用方法
requestPermissions(new String[]{Manifest.permission.WRITE_CONTACTS},REQUEST_CODE_ASK_PERMISSIONS);
来申请权限,会弹出选择框。
requestPermissions(new String[]{Manifest.permission.WRITE_CONTACTS}, REQUEST_CODE_ASK_PERMISSIONS);
- 重写方法onRequestPermissionsResult(),该方法在该方法会在请求权限后,无论是否授权,都会调用
onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults);
在这个里面:requestCode用于区分不同的权限申请动作,
granResults用于与PackageManager.PERMISSION_GRANTED进行比较以判断权限是否申请成功。
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode) { case REQUEST_CODE_ASK_PERMISSIONS: if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { Toast.makeText(this, "WRITE_CONTACTS Denied", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "have not Denie", Toast.LENGTH_SHORT).show(); } break; default: super.onRequestPermissionsResult(requestCode, permissions, grantResults); } }
- 申请权限后,在alert中如果选中了不再提醒后,以后再申请权限时,不会有弹窗选择了。因此,用方法
shouldShowRequestPermissionRationale(Manifest.permission.WRITE_CONTACTS)
来判断是否有选择了不再弹窗。
if (!shouldShowRequestPermissionRationale(Manifest.permission.WRITE_CONTACTS)) { Toast.makeText(this, "do not remind me any more", Toast.LENGTH_SHORT).show(); }
- 低版本兼容:在Android studio中直接使用API方法的时候会自动提示异常
if (android.os.Build.VERSION.SDKs_INT >= android.os.Build.VERSION_CODES.M) { permission = checkSelfPermission(Manifest.permission.WRITE_CONTACTS); }
或者,
用v4兼容包里面的ContextCompat.checkSelfPermission();
ActivityCompat.requestPermissions();
ActivityCompat.shouldShowRequestPermissionRationale(); 需要传入Context。
0 0
- Android M 运行时权限管理
- Android M运行时权限
- Android M运行时权限
- [Android] Android M 运行时权限处理
- Android M权限管理
- Android M权限管理
- Android M运行时权限详解
- Android M 新的运行时权限
- Android M系统运行时权限封装
- Android M 新的运行时权限
- android M 运行时权限申请流程
- Android M Permission 运行时权限
- Android M(6.0) 权限,运行时权限处理
- Android M Permissions 权限管理
- Android M权限管理(续)
- Android M动态权限管理
- Android M(Android 6.0)运行时权限开发详细解析
- Android M 6.0以上 需要运行时申请的权限
- android cmd adb命令安装和删除apk应用
- Android按钮防止多次点击跳转工具类
- 网页图片信息的获取
- FBDigitalFont
- ASP.NET IsPostBack用法
- Android M 运行时权限管理
- 排序算法汇总
- iOS认知,学好iOS基本要学习什么
- CCS5安装及配置注意事项
- SQL CREATE INDEX 语句
- 工作中常常使用的几种加密以及签名的方式:DES加密
- java-JVM中对象判活
- 自定义View应该怎么定义
- RxJava操作符系列一