android 6.0以上添加动态权限,多条权限一起请求
16lz
2021-01-25
因为android 6.0以上出于用户安全考虑,大部分涉及硬件环境的权限需要动态获取。
简单讲述获取多条动态权限并设置监听:
/** * Created by Administrator on 2019/1/21. */public class Premissions { public static int permissioncpde=1;//标识 public static String[] per=new String[]{Manifest.permission.CAMERA,Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.CALL_PHONE}; public static void showTakePermission(Activity activity, Context context) {// 判断手机版本,如果低于6.0 则不用申请权限,直接拍照 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//7.0及以上 ActivityCompat.requestPermissions(activity,per, permissioncpde);//获取多条权限 }else{ } } //判断是否有指定权限 public static boolean isPermission(Activity activity, Context context,String perValue) {// 判断手机版本,如果低于6.0 则不用申请权限,直接拍照 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//7.0及以上 if((ContextCompat.checkSelfPermission(context, perValue) != PackageManager.PERMISSION_GRANTED)) { return false; }else { return true; } }else{ return true; } }}
通过activity的onRequestPermissionsResult 监听权限是否通过
@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if(requestCode==1){ for (int i = 0; i < permissions.length; i++) { if (grantResults[i] == PackageManager.PERMISSION_GRANTED) { if (i == 0){ } } else { Toast.makeText(MainActivity.this, "" + "权限" + permissions[i] + "申请失败", Toast.LENGTH_SHORT).show(); } } }}
在activity 中调用
//动态获取权限Premissions.showTakePermission(this,this);
需要注意在
AndroidManifest 中任然要写权限 否则部分手机会报错
更多相关文章
- [置顶] error opening trace file: No such file or directory (
- [android] android下文件访问的权限
- Android(安卓)WiFi扫描
- android gridview点击子选项动态改变item背景颜色
- android.os.Build的一些使用方法
- android 播放网络或本地gif格式的动态图片
- Android(安卓)Studio 升级和新版本下载
- android IO操作
- Android(安卓)Weekly Notes Issue #239