added device info frag + fixed miui detection

This commit is contained in:
gdlbo
2022-09-28 17:40:37 +03:00
parent 0af6f8166d
commit 576999b582
6 changed files with 257 additions and 12 deletions
@@ -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 + "'";
}
}
@@ -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());
}
}
@@ -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) {
@@ -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;
@@ -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);
}
}
+3
View File
@@ -27,6 +27,9 @@
<Preference
android:key="tokencopy"
android:title="@string/copytokenbtn" />
<Preference
android:key="deviceinfo"
android:title="Device info" />
<Preference
android:key="vk_admin_token"
android:title="@string/vk_admin_token_title" />