直接代码,在6.0之后Android系统的操作权限交给了用户主动管理,未解决不同手机开发中的权限问题:
工具类:
public class PermissionManager { //相机权限检测请求码 public final static int PERMISSIONCODE=999; //相机权限 public final static int CAME=0; //sd卡读写权限 public final static int SD=1; public final static int SD1=2; //短信 public final static int INFOMASTION=3; //电话 public final static int PHONE=4; //精确定位 public final static int GPS=5; //权限集合: public static String[] pers={Manifest.permission.CAMERA,Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS,Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_SMS, Manifest.permission.CALL_PRIVILEGED,Manifest.permission.ACCESS_FINE_LOCATION}; //当前需要申请的权限集合 public static int[] permissions; //其他权限类似可自行添加 /** * 根据需求输入对应的需要检测申请的权限 * @param permission */ public static void setPermission(int... permission) { permissions = permission; } /** * 检测手机权限,如果没有提出申请 * mtype */ public static void checkPermission(Activity activity,int... permission){ setPermission(permission); List<String> list=new ArrayList<String>(); for(int i=0;i<permissions.length;i++){ if (permissions[i]>=pers.length){ //执行此步骤标识,代码检测的权限值集合包含越界值 Toast.makeText(activity,"权限数值不合法",Toast.LENGTH_SHORT).show(); return; } if ((ContextCompat.checkSelfPermission(activity,pers[permissions[i]]))!=PackageManager.PERMISSION_GRANTED){ list.add(pers[permissions[i]]); } } if (list.size()>0){ String[] a=new String[list.size()]; list.toArray(a); //申请权限 ActivityCompat.requestPermissions(activity,a,PERMISSIONCODE); } } }
使用方法,一般的在程序启动或者页面启动调用工具类检测方法,根据需求灵活运用,可扩展:
1.直接在需要的地方调用 PermissionManager.checkPermission(上下问环境,CAME,SD,SD1);
参数:第一个参数是你当前上下文环境
第二个参数是一个参数列表 (可以输入任意个,以逗号分割): int型,根据写入的的int值在工具类中自行查找相应的权限类型
扩展:直接在工具类中 添加 pers 集合(注意顺序),添加你需要检测的权限,设置对应的值就可以进行使用。
2.检测权限结果在activity中,复写方法,判定用户选则,进行相应操作:
@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); //假设只选择了一个权限检测 grantResults这个集合的长度为1if (requestCode == PERMISSIONCODE) { if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { //用户同意了操作权限 } else { //用户拒绝了操作权限 } }}欢迎指正