Android6.0动态权限获取详解
来源:互联网 发布:js获取指定的时间戳 编辑:程序博客网 时间:2024/05/19 23:56
在Android6.0出来之前,大家基本都是在清淡配置文件中间添加系统权限。但在Android6.0之后很多权限需要动态获取。如拍Sd卡的写入,写出、震动,等等。
这里为大家简单的介绍一下如何进行动态权限的获取,以及如何编写动态权限封装类。
这里以获取本地相机拍照为例。
一共两步,1、创建动态权限获取类。2、调用。
1、先创建一个动态权限的封装类PermissionTool.class
,已方便在其他类里面使用(不建议写在Acticity里面)
public class PermissionTool { private Context context;
final public static int REQUEST_CODE_ASK_CAMERA = 125;//相机权限 final public static int REQUEST_CODE_ASK_PHOTOS = 126;//相册权限 public PermissionTool(Context context) { this.context = context; }//动态获取相机权限public boolean onCamera(){if (Build.VERSION.SDK_INT >= 23) { int checkCallPhonePermission = ContextCompat.checkSelfPermission(context, Manifest.permission.CAMERA);//注意这里是用于判断app是否以获取到了相应的权限,若没有。则申请获取。其中REQUEST_CODE_ASK_CAMERA相当于识别码,用于告诉Activity动态获取了相机权限,方便在Activity的onRequestPermissionsResult回调方法if(checkCallPhonePermission != PackageManager.PERMISSION_GRANTED){ ActivityCompat.requestPermissions((Activity) context,new String[]{Manifest.permission.CAMERA},REQUEST_CODE_ASK_CAMERA); return false; }else{ //上面已经写好的拨号方法 return true; } } else { //上面已经写好的拨号方法 return true; }}//动态获取相册权限public boolean onPhotos(){ if (Build.VERSION.SDK_INT >= 23) {int checkCallPhonePermission = ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE); if(checkCallPhonePermission != PackageManager.PERMISSION_GRANTED){ ActivityCompat.requestPermissions((Activity) context,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},REQUEST_CODE_ASK_PHOTOS); return false; }else{ return true; } } else { return true; }}}
2、接下来就是调用
直接在需要的地方调用PermissionTool permissionTool=new PermissionTool(this);
if(permissionTool.onCamera()){
//如果返回是true说明已有权限直接写你的逻辑代码//如果返回是false,这时候Activity会在用户动态赋予app权限之后自动调用onRequestPermissionsResult()这个方法}
//动态权限获取返回@Overridepublic void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode) {//根据requestCode判断获取的是哪个权限,以便进行相应的处理 case REQUEST_CODE_ASK_PHOTOS://相册权限以获取 break; case REQUEST_CODE_ASK_CAMERA://相机权限以获取 break; default: super.onRequestPermissionsResult(requestCode, permissions, grantResults); }}
BUT:
部分情况下可能会出现即使使用了onRequestPermissionsResult()之后,但在用户动态给了权限之后没用运行改方法
此时我们只需要让Activity继承ActivityCompat.OnRequestPermissionsResultCallback这个接口。
阅读全文
0 0
- Android6.0动态权限获取详解
- Android6.0动态获取权限
- android6.0动态获取权限
- android6.0动态获取权限
- Android6.0动态获取权限
- android6.0以上版本动态获取权限
- android6.0以后动态获取权限
- 关于android6.0动态获取权限
- Android6.0设备上动态获取权限
- android6.0动态获取权限库
- Android6.0系统动态获取权限<一>
- Android6.0动态权限
- Android6.0动态权限
- Android6.0动态权限
- Android6.0动态权限
- android6.0动态权限
- Android6.0 动态权限
- android6.0动态权限
- win7安装adb
- Linux执行JAVA JAR出现java.io.IOException: Permission denied
- A Dynamic Algorithm for Local Community Detection in Graphs--阅读笔记
- redhat下的 cpu-tensorflow安装及远程开启notebook
- 单链表转置
- Android6.0动态权限获取详解
- JDK中的设计模式
- 模板 dijstkra+heap
- 无人驾驶特斯拉如何布局?
- php显示所有文件封装函数
- ajax功能1-servlet
- C++中cout输出字符型指针地址值的方法
- AGC 013
- Centos国内下载源