Как программно определить MIUI ROM в андроиде?

Как я могу обнаружить устройство, работающее под прошивкой MIUI от Xiomi? Я могу обнаружить устройство Xiomi с помощью следующего кода.

String manufacturer = "xiaomi";
if (manufacturer.equalsIgnoreCase(android.os.Build.MANUFACTURER)) {
}

Но как я могу обнаружить его MIUI?


person tan    schedule 02.12.2017    source источник
comment
Попробуйте Build.DISPLAY   -  person    schedule 02.12.2017
comment
Значит, из студии Android вам нужно запустить приложение, но устройство не отображается? ты говоришь об этом?   -  person InsaneCat    schedule 08.12.2017


Ответы (2)


  1. Получите свойства устройства: adb shell getprop должен привести к следующему результату:

    • [ro.miui.cust_variant]: [x]
    • [ro.miui.has_cust_partition]: [x]
    • [ro.miui.has_handy_mode_sf]: [x]
    • [ro.miui.has_real_blur]: [x]
    • [ro.miui.mcc]: [xxx]
    • [ro.miui.mnc]: [xxx]
    • [ro.miui.region]: [x]
    • [ro.miui.ui.код версии]: [x]
    • [ro.miui.ui.version.name]: [x]
    • [ro.miui.version.code_time]: [xxx]

И еще несколько свойств, специфичных для MIUI.

Class<?> c = Class.forName("android.os.SystemProperties");
Method get = c.getMethod("get", String.class);
String miui = (String) get.invoke(c, "ro.miui.ui.version.code"); // maybe this one or any other 
// if string miui is not empty, bingo
  1. Или получите список пакетов: в результате adb shell pm list packages должно получиться

    • package:com.miui.system
    • пакет: com.android.calendar
    • пакет: com.miui.translation.kingsoft
    • пакет: com.miui.virtualsim
    • пакет: com.miui.compass ...

Итак, вы можете проверить этот фрагмент кода:

//installedPackages - list them through package manager
for (String packageName : installedPackages) {
    if (packageName.startsWith("com.miui.")) {
        return true;
    }
}
person Drez    schedule 14.02.2018

private static boolean isIntentResolved(Context ctx, Intent intent ){
    return (intent!=null && ctx.getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY) != null);
}

public static boolean isMIUI(Context ctx) {
isIntentResolved(ctx, new Intent("miui.intent.action.OP_AUTO_START").addCategory(Intent.CATEGORY_DEFAULT))
            || isIntentResolved(ctx, new Intent().setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity")))
            || isIntentResolved(ctx, new Intent("miui.intent.action.POWER_HIDE_MODE_APP_LIST").addCategory(Intent.CATEGORY_DEFAULT))
            || isIntentResolved(ctx, new Intent().setComponent(new ComponentName("com.miui.securitycenter", "com.miui.powercenter.PowerSettings")))}

Список элементов взят с https://github.com/dirkam/backgroundable-android.

person Meltzer    schedule 30.12.2018