android 6.0 权限适配
2016-09-30 17:05
417 查看
权限工具类
回调
/** * Created by Kang on 2016/9/28. */ public class PermissionsUtils { private static final java.lang.String TAG = PermissionsUtils.class.getSimpleName(); /** * 请求权限 首先检测 有权限 返回 , 没权限申请权限 * * @param activity activity实例 * @param permission 权限数组 填写一个 * @param requstCode 请求码 */ public static void requestActivityPermission(Activity activity, String permission, int requstCode, HavePermission havePermission) { int permissionResult = ActivityCompat.checkSelfPermission(activity, permission); //检测是否有权限 有权限 返回 if (permissionResult == PackageManager.PERMISSION_GRANTED) { havePermission.callBack(); return; } //否则申请所需权限 ActivityCompat.requestPermissions(activity, new String[]{permission}, requstCode); } /** * 回调结果 * * @param activity * @param info */ public static void onAlertDialog(final Activity activity, String info) { new AlertDialog.Builder(activity) .setTitle("需要权限:") .setMessage("必须需要:" + info + ",请到设置>应用>" + activity.getApplication().getApplicationInfo().loadLabel(activity.getPackageManager()) + ">权限中开启") .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { activity.finish(); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { activity.finish(); } }) .show(); } /** * 全部同意获取权限返回true 否则返回false * @param grantResults 结果 * @return */ public static boolean isAllGranted(int[] grantResults) { boolean flag = false; for (int grant : grantResults) { if(grant != PackageManager.PERMISSION_GRANTED) { flag = false; break; } flag =true; } return flag; } public static void requestFragmentPermission(Fragment fragment,String permission,int REQUST_CODE,HavePermission havePermission) { int permissionResult = ContextCompat.checkSelfPermission(fragment.getActivity(), permission); //检测是否有权限 有权限 返回 if (permissionResult == PackageManager.PERMISSION_GRANTED) { havePermission.callBack(); return; } //否则申请所需权限 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { fragment.requestPermissions(new String[]{permission}, REQUST_CODE); } } /** * 获取到权限回调 */ public interface HavePermission { //有权限回调 void callBack(); } /** * 获取多个权限 * * @param activity * @param requestCode */ public static void requestMutilActivityPermission(final Activity activity, String[] permissions,final int requestCode,HavePermission havePermission) { final List<String> permissionsList = new ArrayList<>(); for (int i = 0; i < permissions.length; i++) { addPermission(activity, permissionsList,permissions[i]); } if (permissionsList.size() > 0) { ActivityCompat.requestPermissions(activity, permissionsList.toArray(new String[permissionsList.size()]), requestCode); }else{ havePermission.callBack(); } } /** * 添加权限 * * @param activity * @param permissionsList * @param permission * @return */ private static boolean addPermission(Activity activity, List<String> permissionsList, String permission) { if (ActivityCompat.checkSelfPermission(activity, permission) != PackageManager.PERMISSION_GRANTED) { permissionsList.add(permission); return false; } return true; } }
回调
/** * 权限是否授权 回调 * @param requestCode 请求码 * @param permissions 权限数组 * @param grantResults 结果数组 */ @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { MyLog.e(TAG,"onRequestPermissionsResult"); switch (requestCode) { case REQUEST_ALL_PERMISSION: //是否全部同意获取权限 boolean flag = PermissionsUtils.isAllGranted(grantResults); if (flag){ initBaiduLc(); } else { //没有全部获得 提示用户 PermissionsUtils.onAlertDialog(this,"定位,储存卡权限程序才能正常运行"); } break; default: super.onRequestPermissionsResult(requestCode, permissions, grantResults); } }
相关文章推荐
- 解决Android 6.0以上的相机权限适配问题
- Android:Android 6.0+权限适配--简单粗暴
- 快速实现 Android 6.0 运行时权限适配
- 详解Android权限管理之RxPermission解决Android 6.0 适配问题
- Android调起相册,拍照,裁剪+6.0权限适配大总结
- android相机权限适配遇到的坑(包含6.0和6.0以下)
- Android权限管理之RxPermission解决Android 6.0 适配问题
- Android权限管理之RxPermission解决Android 6.0 适配问题
- android M(6.0)权限适配
- Android权限管理之RxPermission解决Android 6.0 适配问题
- Android权限管理之RxPermission解决Android 6.0 适配问题
- 关于Android 6.0权限的动态适配详解
- Android拍照存储文件报open failed: ENOENT (No such file or directory)(适配不同手机的方法)以及6.0动态权限
- Android进阶封装之一个类实现兼容Android 6.0权限、适配Android7.0 拍照!
- android 6.0权限适配哥哥踩过的坑
- Android 6.0 permission 权限适配
- android开发6.0权限适配
- android开发 权限适配6.0 permissionsdispatcher的安装使用
- Android 6.0 权限适配(PermissionsDipatcher)
- android 6.0运行时权限适配