| package com.doumee.keyCabinet.utils.update; | 
|   | 
| import android.content.ActivityNotFoundException; | 
| import android.content.ComponentName; | 
| import android.content.Context; | 
| import android.content.Intent; | 
| import android.net.Uri; | 
| import android.os.Build; | 
| import android.text.TextUtils; | 
| import android.widget.Toast; | 
|   | 
| import androidx.annotation.NonNull; | 
| import com.doumee.keyCabinet.BuildConfig; | 
| import com.doumee.keyCabinet.R; | 
| import com.yanzhenjie.permission.Action; | 
| import com.yanzhenjie.permission.AndPermission; | 
|   | 
| import java.util.List; | 
|   | 
| public class PermissionUtils { | 
|     public interface CallBack { | 
|         void sucess(); | 
|   | 
|         void fail(List<String> permissions); | 
|     } | 
|   | 
|     public static void getPermission(Context context, CallBack callBack, @NonNull String... permissions){ | 
|         AndPermission.with(context) | 
|                 .runtime() | 
|                 .permission(permissions) | 
|                 //.rationale(new RuntimeRationale()) | 
|                 .onGranted(new Action<List<String>>() { | 
|                     @Override | 
|                     public void onAction(List<String> permissions) { | 
|                         callBack.sucess(); | 
|                     } | 
|                 }) | 
|                 .onDenied(new Action<List<String>>() { | 
|                     @Override | 
|                     public void onAction(@NonNull List<String> permissions) { | 
|                         callBack.fail(permissions); | 
|                     } | 
|                 }) | 
|                 .start(); | 
|     } | 
|   | 
|     public static void getPermission2(Context context, final CallBack callBack, @NonNull String[]... permissions){ | 
|         AndPermission.with(context) | 
|                 .runtime() | 
|                 .permission(permissions) | 
|                 //.rationale(new RuntimeRationale()) | 
|                 .onGranted(new Action<List<String>>() { | 
|                     @Override | 
|                     public void onAction(List<String> permissions) { | 
|                         callBack.sucess(); | 
|                     } | 
|                 }) | 
|                 .onDenied(new Action<List<String>>() { | 
|                     @Override | 
|                     public void onAction(@NonNull List<String> permissions) { | 
|                         callBack.fail(permissions); | 
|                     } | 
|                 }) | 
|                 .start(); | 
|     } | 
|   | 
|   | 
|     public static void gotoPermission(Context context) { | 
|         try { | 
|             String brand = Build.BRAND;//手机厂商 | 
|             if (TextUtils.equals(brand.toLowerCase(), "redmi") || TextUtils.equals(brand.toLowerCase(), "xiaomi")) { | 
|                 gotoMiuiPermission(context);//小米 | 
|             } else if (TextUtils.equals(brand.toLowerCase(), "meizu")) { | 
|                 gotoMeizuPermission(context); | 
|             } else if (TextUtils.equals(brand.toLowerCase(), "huawei") || TextUtils.equals(brand.toLowerCase(), "honor")) { | 
|                 gotoHuaweiPermission(context); | 
|             } else { | 
|                 context.startActivity(getAppDetailSettingIntent(context)); | 
|             } | 
|         }catch (ActivityNotFoundException e){ | 
|             Toast.makeText(context, context.getString(R.string.download_4), Toast.LENGTH_SHORT).show(); | 
|         } | 
|         catch (Exception e){ | 
|   | 
|         } | 
|     } | 
|   | 
|   | 
|     /** | 
|      * 跳转到miui的权限管理页面 | 
|      */ | 
|     private static void gotoMiuiPermission(Context context) { | 
|         try { // MIUI 8 | 
|             Intent localIntent = new Intent("miui.intent.action.APP_PERM_EDITOR"); | 
|             localIntent.setClassName("com.miui.securitycenter", "com.miui.permcenter.permissions.PermissionsEditorActivity"); | 
|             localIntent.putExtra("extra_pkgname", context.getPackageName()); | 
|             context.startActivity(localIntent); | 
|         } catch (Exception e) { | 
|             try { // MIUI 5/6/7 | 
|                 Intent localIntent = new Intent("miui.intent.action.APP_PERM_EDITOR"); | 
|                 localIntent.setClassName("com.miui.securitycenter", "com.miui.permcenter.permissions.AppPermissionsEditorActivity"); | 
|                 localIntent.putExtra("extra_pkgname", context.getPackageName()); | 
|                 context.startActivity(localIntent); | 
|             } catch (Exception e1) { // 否则跳转到应用详情 | 
|                 context.startActivity(getAppDetailSettingIntent(context)); | 
|             } | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * 跳转到魅族的权限管理系统 | 
|      */ | 
|     private static void gotoMeizuPermission(Context context) { | 
|         try { | 
|             Intent intent = new Intent("com.meizu.safe.security.SHOW_APPSEC"); | 
|             intent.addCategory(Intent.CATEGORY_DEFAULT); | 
|             intent.putExtra("packageName", BuildConfig.APPLICATION_ID); | 
|             context.startActivity(intent); | 
|         } catch (Exception e) { | 
|             e.printStackTrace(); | 
|             context.startActivity(getAppDetailSettingIntent(context)); | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * 华为的权限管理页面 | 
|      */ | 
|     private static void gotoHuaweiPermission(Context context) { | 
|         try { | 
|             Intent intent = new Intent(); | 
|             intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); | 
|             ComponentName comp = new ComponentName("com.huawei.systemmanager", "com.huawei.permissionmanager.ui.MainActivity");//华为权限管理 | 
|             intent.setComponent(comp); | 
|             context.startActivity(intent); | 
|         } catch (Exception e) { | 
|             e.printStackTrace(); | 
|             context.startActivity(getAppDetailSettingIntent(context)); | 
|         } | 
|   | 
|     } | 
|   | 
|     /** | 
|      * 获取应用详情页面intent(如果找不到要跳转的界面,也可以先把用户引导到系统设置页面) | 
|      */ | 
|     private static Intent getAppDetailSettingIntent(Context context) { | 
|         Intent localIntent = new Intent(); | 
|         localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); | 
|         localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS"); | 
|         localIntent.setData(Uri.fromParts("package", context.getPackageName(), null)); | 
|   | 
|         return localIntent; | 
|     } | 
| } |