Skip to content

Commit 4f72876

Browse files
committed
修改MIUI ROM权限申请代码
1 parent 4807f54 commit 4f72876

File tree

1 file changed

+91
-22
lines changed

1 file changed

+91
-22
lines changed

app/src/main/java/com/star/contacts/util/MIUIUtils.java

Lines changed: 91 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@
55
import android.app.AppOpsManager;
66
import android.content.Context;
77
import android.content.Intent;
8-
import android.content.pm.PackageInfo;
98
import android.content.pm.PackageManager;
109
import android.content.pm.ResolveInfo;
10+
import android.net.Uri;
1111
import android.os.Binder;
1212
import android.os.Build;
1313
import android.os.Environment;
14-
import android.text.TextUtils;
14+
import android.provider.Settings;
15+
import android.util.Log;
1516

1617
import java.io.File;
1718
import java.io.FileInputStream;
@@ -29,6 +30,7 @@
2930
*/
3031

3132
public final class MIUIUtils {
33+
public static final String TAG = "MIUIUtils";
3234
private static final String KEY_MIUI_VERSION_CODE = "ro.miui.ui.version.code";
3335
private static final String KEY_MIUI_VERSION_NAME = "ro.miui.ui.version.name";
3436
private static final String KEY_MIUI_INTERNAL_STORAGE = "ro.miui.internal.storage";
@@ -62,7 +64,7 @@ public static boolean checkOp(Context context, int op) {
6264
e.printStackTrace();
6365
}
6466
} else {
65-
android.util.Log.e("MIUIUtils", "Below API 19 cannot invoke!");
67+
Log.e(TAG, "Below API 19 cannot invoke!");
6668
}
6769
return false;
6870
}
@@ -77,33 +79,93 @@ public static String getMIUIVersionName() {
7779
return null;
7880
}
7981

82+
/**
83+
* 小米 ROM 权限申请
84+
*/
8085
public static void openMiuiPermissionActivity(Context context) {
86+
int versionCode = Integer.parseInt(getMIUIVersionName().substring(1));
87+
Log.e(TAG, "this is a special MIUI rom version, its version code " + versionCode);
88+
if (versionCode == 5) {
89+
goToMiuiPermissionActivity_V5(context);
90+
} else if (versionCode == 6) {
91+
goToMiuiPermissionActivity_V6(context);
92+
} else if (versionCode == 7) {
93+
goToMiuiPermissionActivity_V7(context);
94+
} else if (versionCode == 8) {
95+
goToMiuiPermissionActivity_V8(context);
96+
}
97+
}
98+
99+
/**
100+
* 小米 V5 版本 ROM权限申请
101+
*/
102+
public static void goToMiuiPermissionActivity_V5(Context context) {
103+
String packageName = context.getPackageName();
104+
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
105+
Uri uri = Uri.fromParts("package", packageName, null);
106+
intent.setData(uri);
107+
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
108+
if (isIntentAvailable(context, intent)) {
109+
startActivityForResult(context, intent);
110+
} else {
111+
Log.e(TAG, "intent is not available!");
112+
}
113+
}
114+
115+
/**
116+
* 小米 V6 版本 ROM权限申请
117+
*/
118+
public static void goToMiuiPermissionActivity_V6(Context context) {
81119
Intent intent = new Intent("miui.intent.action.APP_PERM_EDITOR");
82-
if (TextUtils.equals("V5", getMIUIVersionName())) {
83-
PackageInfo pInfo;
84-
try {
85-
pInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
86-
} catch (PackageManager.NameNotFoundException e) {
87-
e.printStackTrace();
88-
return;
89-
}
90-
intent.setClassName("com.miui.securitycenter", "com.miui.securitycenter.permission.AppPermissionsEditor");
91-
intent.putExtra("extra_package_uid", pInfo.applicationInfo.uid);
120+
intent.setClassName("com.miui.securitycenter", "com.miui.permcenter.permissions.AppPermissionsEditorActivity");
121+
intent.putExtra("extra_pkgname", context.getPackageName());
122+
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
123+
if (isIntentAvailable(context, intent)) {
124+
startActivityForResult(context, intent);
92125
} else {
93-
intent.setClassName("com.miui.securitycenter", "com.miui.permcenter.permissions.AppPermissionsEditorActivity");
94-
intent.putExtra("extra_pkgname", context.getPackageName());
126+
Log.e(TAG, "Intent is not available!");
95127
}
96-
if (isActivityAvailable(context, intent)) {
97-
if (context instanceof Activity) {
98-
Activity a = (Activity) context;
99-
a.startActivityForResult(intent, 2);
100-
}
128+
}
129+
130+
/**
131+
* 小米 V7 版本 ROM权限申请
132+
*/
133+
public static void goToMiuiPermissionActivity_V7(Context context) {
134+
Intent intent = new Intent("miui.intent.action.APP_PERM_EDITOR");
135+
intent.setClassName("com.miui.securitycenter", "com.miui.permcenter.permissions.AppPermissionsEditorActivity");
136+
intent.putExtra("extra_pkgname", context.getPackageName());
137+
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
138+
if (isIntentAvailable(context, intent)) {
139+
startActivityForResult(context, intent);
140+
} else {
141+
goToMiuiPermissionActivity_V8(context);// 兼容我的miui7开发版 我的com.miui.securitycenter的app升级成了2.0.5了,只能用v8的代码运行
142+
}
143+
}
144+
145+
/**
146+
* 小米 V8 版本 ROM权限申请
147+
*/
148+
public static void goToMiuiPermissionActivity_V8(Context context) {
149+
Intent intent = new Intent("miui.intent.action.APP_PERM_EDITOR");
150+
intent.setClassName("com.miui.securitycenter", "com.miui.permcenter.permissions.PermissionsEditorActivity");
151+
intent.putExtra("extra_pkgname", context.getPackageName());
152+
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
153+
if (isIntentAvailable(context, intent)) {
154+
startActivityForResult(context, intent);
101155
} else {
102-
android.util.Log.e("MIUIUtils", "Intent is not available!");
156+
intent = new Intent("miui.intent.action.APP_PERM_EDITOR");
157+
intent.setPackage("com.miui.securitycenter");
158+
intent.putExtra("extra_pkgname", context.getPackageName());
159+
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
160+
if (isIntentAvailable(context, intent)) {
161+
startActivityForResult(context, intent);
162+
} else {
163+
Log.e(TAG, "Intent is not available!");
164+
}
103165
}
104166
}
105167

106-
public static boolean isActivityAvailable(Context cxt, Intent intent) {
168+
private static boolean isIntentAvailable(Context cxt, Intent intent) {
107169
PackageManager pm = cxt.getPackageManager();
108170
if (pm == null) {
109171
return false;
@@ -113,6 +175,13 @@ public static boolean isActivityAvailable(Context cxt, Intent intent) {
113175
return list != null && list.size() > 0;
114176
}
115177

178+
private static void startActivityForResult(Context context, Intent intent) {
179+
if (context instanceof Activity) {
180+
Activity a = (Activity) context;
181+
a.startActivityForResult(intent, 2);
182+
}
183+
}
184+
116185
public static class BuildProperties {
117186

118187
private final Properties properties;

0 commit comments

Comments
 (0)