From 576999b582fd472faadc600694b762d7431ce436 Mon Sep 17 00:00:00 2001 From: gdlbo <41114720+gdlbo@users.noreply.github.com> Date: Wed, 28 Sep 2022 17:40:37 +0300 Subject: [PATCH] added device info frag + fixed miui detection --- .../ru/vtosters/lite/deviceinfo/Device.java | 8 + .../lite/deviceinfo/DeviceInfoCollector.java | 2 + .../vtosters/lite/deviceinfo/OEMDetector.java | 49 ++++- .../lite/ui/fragments/OtherFragment.java | 11 +- .../lite/ui/fragments/SystemInfo.java | 196 ++++++++++++++++++ smali/res/xml/preferences_other.xml | 3 + 6 files changed, 257 insertions(+), 12 deletions(-) create mode 100644 app/src/main/java/ru/vtosters/lite/ui/fragments/SystemInfo.java diff --git a/app/src/main/java/ru/vtosters/lite/deviceinfo/Device.java b/app/src/main/java/ru/vtosters/lite/deviceinfo/Device.java index 492c8d6e0..eca3dd6f3 100644 --- a/app/src/main/java/ru/vtosters/lite/deviceinfo/Device.java +++ b/app/src/main/java/ru/vtosters/lite/deviceinfo/Device.java @@ -1,5 +1,6 @@ package ru.vtosters.lite.deviceinfo; +import static ru.vtosters.lite.deviceinfo.OEMDetector.isEMUI; import static ru.vtosters.lite.deviceinfo.OEMDetector.isMIUI; import static ru.vtosters.lite.deviceinfo.OEMDetector.isMIUIAlter; import static ru.vtosters.lite.deviceinfo.OEMDetector.isSamsung; @@ -17,6 +18,7 @@ public class Device { private String MiuiIncrementalCode; private String OneUiMinorVersion; private String OneUiMajorVersion; + private String EmuiVersion; private int sdkVersion; public Device withSdkVersion(int i) { @@ -79,6 +81,11 @@ public class Device { return this; } + public Device withEmuiVersionName(String str) { + this.EmuiVersion = str; + return this; + } + public String toDeviceName() { return "Device information: " + "commit='" + getBuildNumber() @@ -91,6 +98,7 @@ public class Device { + (isMIUI() ? "', MiuiUiVersionCode='" + this.MiuiUiVersionCode + "', MiuiUiVersionName='" + this.MiuiUiVersionName : "") + (isSamsung() ? "', OneUiMajorVersion='" + this.OneUiMajorVersion + "', OneUiMinorVersion='" + this.OneUiMinorVersion : "") + (isMIUIAlter() ? "', MiuiUiVersionIncrementalCode='" + this.MiuiIncrementalCode : "") + + (isEMUI() ? "', MiuiUiVersionIncrementalCode='" + this.EmuiVersion : "") + "', modelName='" + this.modelName + "'"; } } diff --git a/app/src/main/java/ru/vtosters/lite/deviceinfo/DeviceInfoCollector.java b/app/src/main/java/ru/vtosters/lite/deviceinfo/DeviceInfoCollector.java index 696e81496..2ec7bfcfd 100644 --- a/app/src/main/java/ru/vtosters/lite/deviceinfo/DeviceInfoCollector.java +++ b/app/src/main/java/ru/vtosters/lite/deviceinfo/DeviceInfoCollector.java @@ -1,5 +1,6 @@ package ru.vtosters.lite.deviceinfo; +import static ru.vtosters.lite.deviceinfo.OEMDetector.getEmuiVersionCode; import static ru.vtosters.lite.deviceinfo.OEMDetector.getMiuiUiVersionCode; import static ru.vtosters.lite.deviceinfo.OEMDetector.getMiuiUiVersionIncrementalCode; import static ru.vtosters.lite.deviceinfo.OEMDetector.getMiuiUiVersionName; @@ -23,6 +24,7 @@ public class DeviceInfoCollector { .withOneUiMinorVersionName(String.valueOf(getOneUiMinorVersion())) .withMiuiUiVersionName(getMiuiUiVersionName()) .withMiuiIncrementalCodeName(getMiuiUiVersionIncrementalCode()) + .withEmuiVersionName(getEmuiVersionCode()) .withMiuiUiVersionCodeName(getMiuiUiVersionCode()); } } diff --git a/app/src/main/java/ru/vtosters/lite/deviceinfo/OEMDetector.java b/app/src/main/java/ru/vtosters/lite/deviceinfo/OEMDetector.java index c78d55917..45f4ac0fe 100644 --- a/app/src/main/java/ru/vtosters/lite/deviceinfo/OEMDetector.java +++ b/app/src/main/java/ru/vtosters/lite/deviceinfo/OEMDetector.java @@ -1,17 +1,23 @@ package ru.vtosters.lite.deviceinfo; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; + +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageManager; import android.os.Build; import android.text.TextUtils; import java.lang.reflect.Field; import java.lang.reflect.Method; +import ru.vtosters.lite.utils.AndroidUtils; import ru.vtosters.lite.utils.ReflectionUtils; public class OEMDetector { private static Field semPlatformIntField; private static Method getPropMtd; - private static Boolean isOneUi; private static int oneUiMajorVersion; private static float oneUiMinorVersion; @@ -56,31 +62,48 @@ public class OEMDetector { return isMIUI() || isEMUI() || isFlyme() || isZenUI() || isSamsung() || isVivo(); } - static boolean isMIUI() { - return !TextUtils.isEmpty(getMiuiUiVersionName()) || !TextUtils.isEmpty(getMiuiUiVersionIncrementalCode()); + public static boolean isMIUI() { + try { + getGlobalContext().getPackageManager().getPackageInfo("com.miui.system", 0); + return true; + } catch (Exception unused) { + return detectMiuiV2(); + } } - static boolean isMIUIAlter() { - return !TextUtils.isEmpty(getMiuiUiVersionIncrementalCode()); + public static boolean isIntentResolved(Context ctx, Intent intent ){ + return (intent!=null && ctx.getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY) != null); } - private static boolean isEMUI() { + public static boolean detectMiuiV2() { + var ctx = getGlobalContext(); + return 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"))); + } + + public static boolean isMIUIAlter() { + return !TextUtils.isEmpty(getMiuiUiVersionIncrementalCode()) && isMIUI(); + } + + public static boolean isEMUI() { return !TextUtils.isEmpty(getSystemProperty("ro.build.hw_emui_api_level")); } - private static boolean isZenUI() { + public static boolean isZenUI() { return !TextUtils.isEmpty(getSystemProperty("ro.asus.ui")); } - private static boolean isVivo() { + public static boolean isVivo() { return !TextUtils.isEmpty(getSystemProperty("ro.vivo.os.version")) || !TextUtils.isEmpty(getSystemProperty("ro.vivo.rom")) || !TextUtils.isEmpty(getSystemProperty("ro.vivo.rom.version")) || !TextUtils.isEmpty(getSystemProperty("ro.vivo.build.version.sdk")); } - static boolean isSamsung() { + public static boolean isSamsung() { return !TextUtils.isEmpty(getSystemProperty("ro.config.knox")); } - private static boolean isFlyme() { + public static boolean isFlyme() { return !TextUtils.isEmpty(getSystemProperty("ro.build.ro.meizu.rom.config")) || !TextUtils.isEmpty(getSystemProperty("persist.sys.static_blur_mode")) || !TextUtils.isEmpty(getSystemProperty("persist.sys.use.flyme.icon")); } @@ -92,11 +115,15 @@ public class OEMDetector { return getSystemProperty("ro.miui.ui.version.code"); } + public static String getEmuiVersionCode() { + return getSystemProperty("ro.build.version.emui"); + } + public static String getMiuiUiVersionIncrementalCode() { return getSystemProperty("ro.build.version.incremental"); } - private static String getSystemProperty(String prop) { + public static String getSystemProperty(String prop) { try { return (String) getPropMtd.invoke(null, prop); } catch (Throwable e) { diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/OtherFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/OtherFragment.java index da5daa368..438310bf6 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/OtherFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/OtherFragment.java @@ -43,6 +43,7 @@ import com.vk.im.ui.providers.audiomsg.PlayerActionSources; import com.vk.imageloader.VKImageLoader; import com.vk.media.player.cache.AutoPlayCacheHolder; import com.vk.mediastore.MediaStorage; +import com.vk.navigation.Navigator; import com.vk.pushes.PushSubscriber; import com.vk.stickers.Stickers; import com.vtosters.lite.auth.VKAccountManager; @@ -56,7 +57,6 @@ import ru.vtosters.lite.ui.activities.VKAdminTokenActivity; import ru.vtosters.lite.ui.components.BackupManager; import ru.vtosters.lite.utils.AndroidUtils; import ru.vtosters.lite.utils.ContactsUtils; -import ru.vtosters.lite.utils.ThemesUtils; public class OtherFragment extends MaterialPreferenceToolbarFragment { private static final int VK_ADMIN_TOKEN_REQUEST_CODE = 1; @@ -91,6 +91,15 @@ public class OtherFragment extends MaterialPreferenceToolbarFragment { cacheCleanDialog(); return true; }); + + findPreference("deviceinfo").setOnPreferenceClickListener(preference -> { + Context context = requireContext(); + Intent a2 = new Navigator(SystemInfo.class).b(context); + a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + context.startActivity(a2); + return true; + }); + findPreference("autoclearcache").setOnPreferenceClickListener(preference -> { cacheAutoCleanDialog(); return true; diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/SystemInfo.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/SystemInfo.java new file mode 100644 index 000000000..e52572dba --- /dev/null +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/SystemInfo.java @@ -0,0 +1,196 @@ +package ru.vtosters.lite.ui.fragments; + +import static ru.vtosters.lite.deviceinfo.OEMDetector.detectMiuiV2; +import static ru.vtosters.lite.deviceinfo.OEMDetector.getEmuiVersionCode; +import static ru.vtosters.lite.deviceinfo.OEMDetector.getMiuiUiVersionCode; +import static ru.vtosters.lite.deviceinfo.OEMDetector.getMiuiUiVersionIncrementalCode; +import static ru.vtosters.lite.deviceinfo.OEMDetector.getMiuiUiVersionName; +import static ru.vtosters.lite.deviceinfo.OEMDetector.getOneUiMajorVersion; +import static ru.vtosters.lite.deviceinfo.OEMDetector.getOneUiMinorVersion; +import static ru.vtosters.lite.deviceinfo.OEMDetector.isEMUI; +import static ru.vtosters.lite.deviceinfo.OEMDetector.isFlyme; +import static ru.vtosters.lite.deviceinfo.OEMDetector.isMIUI; +import static ru.vtosters.lite.deviceinfo.OEMDetector.isMIUIAlter; +import static ru.vtosters.lite.deviceinfo.OEMDetector.isOneUi; +import static ru.vtosters.lite.deviceinfo.OEMDetector.isSamsung; +import static ru.vtosters.lite.deviceinfo.OEMDetector.isVivo; +import static ru.vtosters.lite.deviceinfo.OEMDetector.isZenUI; +import static ru.vtosters.lite.ui.PreferencesUtil.addPreference; +import static ru.vtosters.lite.ui.PreferencesUtil.addPreferenceCategory; +import static ru.vtosters.lite.utils.About.getBuildNumber; +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; +import static ru.vtosters.lite.utils.AndroidUtils.isTablet; +import static ru.vtosters.lite.utils.AndroidUtils.sendToast; +import static ru.vtosters.lite.utils.Preferences.isValidSignature; + +import android.content.ClipData; +import android.content.ClipboardManager; +import android.content.Context; +import android.os.Build; +import android.os.Bundle; + +import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment; + +import ru.vtosters.lite.utils.AndroidUtils; + +public class SystemInfo extends MaterialPreferenceToolbarFragment { + + @Override + public void onCreate(Bundle bundle) { + super.onCreate(bundle); + addPreferencesFromResource(getIdentifier("empty", "xml")); + + var oneUiMajorVersion = String.valueOf(getOneUiMajorVersion()); + var oneUiMinorVersion = String.valueOf(getOneUiMinorVersion()); + var sdkVersion = String.valueOf(Build.VERSION.SDK_INT); + var productName = Build.PRODUCT; + var deviceName = Build.DEVICE; + var boardName = Build.BOARD; + var manufacturerName = Build.MANUFACTURER; + var brandName = Build.BRAND; + var modelName = Build.MODEL; + var miuiUiVersionName = getMiuiUiVersionName(); + var miuiIncrementalCodeName = getMiuiUiVersionIncrementalCode(); + var miuiUiVersionCodeName = getMiuiUiVersionCode(); + var emuiVersionCode = getEmuiVersionCode(); + var packageName = requireContext().getPackageName(); + var commit = getBuildNumber(); + + var isMiui = isMIUI(); + var isMIUIDetectionV2 = detectMiuiV2(); + var isFlyme = isFlyme(); + var isSamsung = isSamsung(); + var isOneUi = isOneUi(); + var isVivo = isVivo(); + var isZenUI = isZenUI(); + var isEMUI = isEMUI(); + var isMIUIAlter = isMIUIAlter(); + + var isValidSignature = isValidSignature(); + var isTablet = isTablet(); + + addPreferenceCategory(this, "App information"); + + addPreference(this, "", "Package name", packageName, null, preference -> { + ((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", packageName)); + sendToast(AndroidUtils.getString("copied_to_clipboard")); + return false; + }); + + addPreference(this, "", "Commit", commit, null, preference -> { + ((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", commit)); + sendToast(AndroidUtils.getString("copied_to_clipboard")); + return false; + }); + + addPreference(this, "", "Valid Signature", "Value: " + isValidSignature, null, null); + + addPreference(this, "", "isTablet", "Value: " + isTablet, null, null); + + addPreferenceCategory(this, "System information"); + + addPreference(this, "", "SDK Version", sdkVersion, null, preference -> { + ((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", sdkVersion)); + sendToast(AndroidUtils.getString("copied_to_clipboard")); + return false; + }); + + addPreference(this, "", "Product Name", productName, null, preference -> { + ((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", productName)); + sendToast(AndroidUtils.getString("copied_to_clipboard")); + return false; + }); + + addPreference(this, "", "Device Name", deviceName, null, preference -> { + ((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", deviceName)); + sendToast(AndroidUtils.getString("copied_to_clipboard")); + return false; + }); + + addPreference(this, "", "Board Name", boardName, null, preference -> { + ((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", boardName)); + sendToast(AndroidUtils.getString("copied_to_clipboard")); + return false; + }); + + addPreference(this, "", "Manufacturer Name", manufacturerName, null, preference -> { + ((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", manufacturerName)); + sendToast(AndroidUtils.getString("copied_to_clipboard")); + return false; + }); + + addPreference(this, "", "Brand Name", brandName, null, preference -> { + ((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", brandName)); + sendToast(AndroidUtils.getString("copied_to_clipboard")); + return false; + }); + + addPreference(this, "", "Model Name", modelName, null, preference -> { + ((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", modelName)); + sendToast(AndroidUtils.getString("copied_to_clipboard")); + return false; + }); + + addPreferenceCategory(this, "OEM Information"); + + if (isOneUi){ + addPreference(this, "", "OneUiMajorVersion", oneUiMajorVersion, null, preference -> { + ((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", oneUiMajorVersion)); + sendToast(AndroidUtils.getString("copied_to_clipboard")); + return false; + }); + + addPreference(this, "", "OneUiMinorVersion", oneUiMinorVersion, null, preference -> { + ((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", oneUiMinorVersion)); + sendToast(AndroidUtils.getString("copied_to_clipboard")); + return false; + }); + } else if (isMiui) { + addPreference(this, "", "miuiUiVersionName", miuiUiVersionName, null, preference -> { + ((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", miuiUiVersionName)); + sendToast(AndroidUtils.getString("copied_to_clipboard")); + return false; + }); + + addPreference(this, "", "miuiUiVersionCodeName", miuiUiVersionCodeName, null, preference -> { + ((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", miuiUiVersionCodeName)); + sendToast(AndroidUtils.getString("copied_to_clipboard")); + return false; + }); + + if (isMIUIAlter) { + addPreference(this, "", "miuiIncrementalCodeName", miuiIncrementalCodeName, null, preference -> { + ((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", miuiIncrementalCodeName)); + sendToast(AndroidUtils.getString("copied_to_clipboard")); + return false; + }); + } + } else if (isEMUI){ + addPreference(this, "", "emuiVersionCode", emuiVersionCode, null, preference -> { + ((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", emuiVersionCode)); + sendToast(AndroidUtils.getString("copied_to_clipboard")); + return false; + }); + } else { + addPreference(this, "", "No info", "No information about OEM", null, null); + } + + addPreferenceCategory(this, "OEM List"); + + addPreference(this, "", "isOneUi", "Value: " + isOneUi, null, null); + + addPreference(this, "", "isMiui", "Value: " + isMiui, null, null); + + addPreference(this, "", "isEMUI", "Value: " + isEMUI, null, null); + + addPreference(this, "", "isMIUIDetectionV2", "Value: " + isMIUIDetectionV2, null, null); + + addPreference(this, "", "isFlyme", "Value: " + isFlyme, null, null); + + addPreference(this, "", "isSamsung", "Value: " + isSamsung, null, null); + + addPreference(this, "", "isVivo", "Value: " + isVivo, null, null); + + addPreference(this, "", "isZenUI", "Value: " + isZenUI, null, null); + } +} diff --git a/smali/res/xml/preferences_other.xml b/smali/res/xml/preferences_other.xml index 2d207b430..3ec18e7f9 100644 --- a/smali/res/xml/preferences_other.xml +++ b/smali/res/xml/preferences_other.xml @@ -27,6 +27,9 @@ +