【android 6.0 动态申请权限的基本方法和框架使用】
来源:互联网 发布:我是特种兵 知乎 编辑:程序博客网 时间:2024/06/03 16:53
基本的使用:
先提供一下goog官方的学习文档:
权限最佳做法
在运行时请求权限
int selfPermission = ContextCompat.checkSelfPermission(Main2Activity.this, Manifest.permission.CALL_PHONE); if (selfPermission != PackageManager.PERMISSION_GRANTED) { /** * 判断该权限请求是否已经被 Denied(拒绝)过。 返回:true 说明被拒绝过 ; false 说明没有拒绝过 * * 注意: * 如果用户在过去拒绝了权限请求,并在权限请求系统对话框中选择了 Don't ask again 选项,此方法将返回 false。 * 如果设备规范禁止应用具有该权限,此方法也会返回 false。 */ if (ActivityCompat.shouldShowRequestPermissionRationale(Main2Activity.this, Manifest.permission.CALL_PHONE)) { Log.i(TAG, "onViewClicked: 该权限请求已经被 Denied(拒绝)过。"); //弹出对话框,告诉用户申请此权限的理由,然后再次请求该权限。 //ActivityCompat.requestPermissions(Main2Activity.this, new String[]{Manifest.permission.CALL_PHONE}, 1); } else { Log.i(TAG, "onViewClicked: 该权限请未被denied过"); ActivityCompat.requestPermissions(Main2Activity.this, new String[]{Manifest.permission.CALL_PHONE}, 1); } } else { openAlbum();//打开相册 }
发起请求的回调:
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); Log.i(TAG, "onRequestPermissionsResult: requestCode=" + requestCode); switch (requestCode) { case 1: if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { openAlbum(); } else { Toast.makeText(this, "you denied the permission", Toast.LENGTH_SHORT).show(); Log.i(TAG, "onRequestPermissionsResult: you denied the permission"); } break; default: break; } }
一些框架的封装:
HiPermission 的简单使用:更多查看参考博客相关文章。
该方法 申请几乎必要的三个权限。照相,定位,sd卡写
//CAMERA, ACCESS_FINE_LOCATION and WRITE_EXTERNAL_STORAGE HiPermission.create(this) .animStyle(R.style.PermissionAnimModal) //.style(R.style.PermissionDefaultGreenStyle) .checkMutiPermission(new PermissionCallback() { @Override public void onClose() { Log.i(TAG, "onClose They cancelled our request"); //用户关闭权限申请 } @Override public void onFinish() { Log.i(TAG, "onFinish: All permissions requested completed"); //所有权限申请完成 } @Override public void onDeny(String permission, int position) { Log.i(TAG, "onDeny");//在否认 } @Override public void onGuarantee(String permission, int position) { Log.i(TAG, "onGuarantee");//用户允许后,会回调该函数 //在此可以做 事件处理啦,因为用户已经同意了,此时已经拿到所需权限啦。 } });
参考博客:
一行代码搞定漂亮的Android6.0权限申请界面
HiPermission
AndPermission
这个关注度比较高:star 4K多 也可作为备用
PermissionsDispatcher
阅读全文
0 0
- 【android 6.0 动态申请权限的基本方法和框架使用】
- Android 6.0(API 23)及其以上动态申请的权限与申请权限的方法
- Android 6.0 权限申请详解,以及权限申请框架MPermissions的简单使用
- Android6.0权限申请框架的permissionsdispatcher的基本使用
- Android 6.0动态权限申请的处理
- android 6.0以上动态权限的申请
- Android的权限大全和动态使用Android权限方法
- Android 6.0 动态申请权限
- android 6.0权限动态申请
- Android 6.0 动态权限申请
- Android 6.0权限动态申请
- Android 6.0 动态权限申请
- android 6.0 动态权限申请
- Android 6.0 动态权限申请
- Android 6.0动态权限申请
- Android 6.0 动态权限申请
- Android 6.0 动态申请权限
- Android 6.0权限动态申请
- C++ map,set内部数据结构简析
- Python--字符串格式化
- 五、solr删除数据的四种方法
- C#安卓自学示例(5)工欲善其事必先利其器
- 六、solr查询参数
- 【android 6.0 动态申请权限的基本方法和框架使用】
- linux删除历史文件
- 算法谜题115 Bachet的砝码
- 七、solr Field、CopyField、DynamicField区别
- 解决PKIX:unable to find valid certification path to requested target 的问题
- 点集最小外接矩算法
- spring boot----简单入门
- RN IOS极光推送配置
- 算法--微软面试题:求一个整数数组元素间最小差值