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 permissions); } public static void getPermission(Context context, CallBack callBack, @NonNull String... permissions){ AndPermission.with(context) .runtime() .permission(permissions) //.rationale(new RuntimeRationale()) .onGranted(new Action>() { @Override public void onAction(List permissions) { callBack.sucess(); } }) .onDenied(new Action>() { @Override public void onAction(@NonNull List 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>() { @Override public void onAction(List permissions) { callBack.sucess(); } }) .onDenied(new Action>() { @Override public void onAction(@NonNull List 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; } }