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 @@
+