代码
private void initOpenPermission() {
String sdk = Build.VERSION.SDK;
String model = Build.MODEL;
String release = Build.VERSION.RELEASE;
if (TextUtils.equals(brand.toLowerCase(), "redmi") || TextUtils.equals(brand.toLowerCase(), "xiaomi")) {
gotoMiuiPermission();
Log.d(TAG, "onViewClicked: redmi");
} else if (TextUtils.equals(brand.toLowerCase(), "meizu")) {
gotoMeizuPermission();
Log.d(TAG, "onViewClicked: meizu");
} else if (TextUtils.equals(brand.toLowerCase(), "huawei") || TextUtils.equals(brand.toLowerCase(), "honor")) {
gotoHuaweiPermission();
Log.d(TAG, "onViewClicked: huawei");
} else if (TextUtils.equals(brand.toLowerCase(), "oppo")) {
gotoOPPOPermission();
Log.d(TAG, "onViewClicked: oppo");
} else {
startActivity(getAppDetailSettingIntent());
}
}
各个方法
private void gotoMiuiPermission () {
try {
Intent localIntent = new Intent("miui.intent.action.APP_PERM_EDITOR");
localIntent.setClassName("com.miui.securitycenter", "com.miui.permcenter.permissions.PermissionsEditorActivity");
localIntent.putExtra("extra_pkgname", MainActivity.this.getPackageName());
MainActivity.this.startActivity(localIntent);
} catch (Exception e) {
try {
Intent localIntent = new Intent("miui.intent.action.APP_PERM_EDITOR");
localIntent.setClassName("com.miui.securitycenter", "com.miui.permcenter.permissions.AppPermissionsEditorActivity");
localIntent.putExtra("extra_pkgname", MainActivity.this.getPackageName());
MainActivity.this.startActivity(localIntent);
} catch (Exception e1) {
startActivity(getAppDetailSettingIntent());
}
}
}
private void gotoMeizuPermission () {
try {
Intent intent = new Intent("com.meizu.safe.security.SHOW_APPSEC");
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.putExtra("packageName", BuildConfig.APPLICATION_ID);
startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
startActivity(getAppDetailSettingIntent());
}
}
private void gotoHuaweiPermission () {
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);
startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
startActivity(getAppDetailSettingIntent());
Toast.makeText(context, "权限界面失败了", Toast.LENGTH_SHORT).show();
}
}
private void gotoOPPOPermission () {
try {
Intent intent = oppoApi(MainActivity.this);
startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
startActivity(getAppDetailSettingIntent());
Log.d(TAG, "gotoOPPOPermission: OPPO界面失败");
}
}
private Intent getAppDetailSettingIntent () {
Intent localIntent = new Intent();
localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (Build.VERSION.SDK_INT >= 9) {
localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
localIntent.setData(Uri.fromParts("package", getPackageName(), null));
} else if (Build.VERSION.SDK_INT <= 8) {
localIntent.setAction(Intent.ACTION_VIEW);
localIntent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails");
localIntent.putExtra("com.android.settings.ApplicationPkgName", getPackageName());
}
return localIntent;
}
oppo权限代码
private static Intent oppoApi(Context context) {
Intent intent = new Intent();
intent.putExtra("packageName", context.getPackageName());
intent.setClassName("com.oppo.launcher", "com.oppo.launcher.shortcut.ShortcutSettingsActivity");
if (hasActivity(context, intent)) return intent;
intent.setComponent(new ComponentName("com.color.safecenter", "com.color.safecenter.permission.PermissionManagerActivity"));
return intent;
}
private static boolean hasActivity(Context context, Intent intent) {
PackageManager packageManager = context.getPackageManager();
return packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY).size() > 0;
}