-
-
Save 0awawa0/65bf88e43159750f596da194ed923522 to your computer and use it in GitHub Desktop.
| import android.annotation.SuppressLint; | |
| import android.annotation.TargetApi; | |
| import android.app.AppOpsManager; | |
| import android.content.Context; | |
| import android.content.Intent; | |
| import android.text.TextUtils; | |
| import java.lang.reflect.Method; | |
| // MIUI. Redefining Android. | |
| // (not in the very best way I'd say) | |
| public class XiaomiUtilities { | |
| // custom permissions | |
| public static final int OP_ACCESS_XIAOMI_ACCOUNT = 10015; | |
| public static final int OP_AUTO_START = 10008; | |
| public static final int OP_BACKGROUND_START_ACTIVITY = 10021; | |
| public static final int OP_BLUETOOTH_CHANGE = 10002; | |
| public static final int OP_BOOT_COMPLETED = 10007; | |
| public static final int OP_DATA_CONNECT_CHANGE = 10003; | |
| public static final int OP_DELETE_CALL_LOG = 10013; | |
| public static final int OP_DELETE_CONTACTS = 10012; | |
| public static final int OP_DELETE_MMS = 10011; | |
| public static final int OP_DELETE_SMS = 10010; | |
| public static final int OP_EXACT_ALARM = 10014; | |
| public static final int OP_GET_INSTALLED_APPS = 10022; | |
| public static final int OP_GET_TASKS = 10019; | |
| public static final int OP_INSTALL_SHORTCUT = 10017; | |
| public static final int OP_NFC = 10016; | |
| public static final int OP_NFC_CHANGE = 10009; | |
| public static final int OP_READ_MMS = 10005; | |
| public static final int OP_READ_NOTIFICATION_SMS = 10018; | |
| public static final int OP_SEND_MMS = 10004; | |
| public static final int OP_SERVICE_FOREGROUND = 10023; | |
| public static final int OP_SHOW_WHEN_LOCKED = 10020; | |
| public static final int OP_WIFI_CHANGE = 10001; | |
| public static final int OP_WRITE_MMS = 10006; | |
| public static boolean isMIUI() { | |
| return !TextUtils.isEmpty(getSystemProperty("ro.miui.ui.version.name")); | |
| } | |
| @SuppressLint("PrivateApi") | |
| private static String getSystemProperty(String key) { | |
| try { | |
| Class props = Class.forName("android.os.SystemProperties"); | |
| return (String) props.getMethod("get", String.class).invoke(null, key); | |
| } catch (Exception ignore) { | |
| } | |
| return null; | |
| } | |
| @SuppressWarnings("JavaReflectionMemberAccess") | |
| @TargetApi(19) | |
| public static boolean isCustomPermissionGranted(Context context, int permission) { | |
| try { | |
| AppOpsManager mgr = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE); | |
| Method m = AppOpsManager.class.getMethod("checkOpNoThrow", int.class, int.class, String.class); | |
| int result = (int) m.invoke(mgr, permission, android.os.Process.myUid(), context.getPackageName()); | |
| return result == AppOpsManager.MODE_ALLOWED; | |
| } catch (Exception e) { | |
| Logger.INSTANCE.log("XiaomiUtils", e.toString(), Logger.IMPORTANCE.DEFAULT, true); | |
| } | |
| return true; | |
| } | |
| public static Intent getPermissionManagerIntent(Context context) { | |
| Intent intent = new Intent("miui.intent.action.APP_PERM_EDITOR"); | |
| intent.putExtra("extra_package_uid", android.os.Process.myUid()); | |
| intent.putExtra("extra_pkgname", context.getPackageName()); | |
| intent.putExtra("extra_package_name", context.getPackageName()); | |
| return intent; | |
| } | |
| } |
I still don't know what the meaning of the following MIUIOP permissions:
MIUIOP(10024)
...
MIUIOP(10028)
MIUIOP(10029)
MIUIOP(10030)
MIUIOP(10031)
MIUIOP(10032)
MIUIOP(10033)
MIUIOP(10034)
MIUIOP(10035)
MIUIOP(10036)
...
Can anyone provide more information about them?
I still don't know what the meaning of the following MIUIOP permissions:
MIUIOP(10024) ... MIUIOP(10028) MIUIOP(10029) MIUIOP(10030) MIUIOP(10031) MIUIOP(10032) MIUIOP(10033) MIUIOP(10034) MIUIOP(10035) MIUIOP(10036) ...Can anyone provide more information about them?
Hello, what do you want to achieve? I can not find the code permission information in Xiaomi but somehow this is insane it work for me for overlay permission
@chanphiromsok they are in framework.jar
@chanphiromsok they are in framework.jar
do you have resources? I want it too
hi, what will we pass on place of permission in this isCustomPermissionGranted
OP_AUTO_START is still not working
hi, what will we pass on place of permission in this isCustomPermissionGranted
XiaomiUtilities.isCustomPermissionGranted(this, XiaomiUtilities.OP_BACKGROUND_START_ACTIVITY)
@nikunjanaghan For me it worked.
I'd like to REALLY thank you. @0awawa0 . I could fix. a problem with my app.
thanks you so much it help