我想在我的应用中检查设备是否具有自定义ROM。这样,我在应用程序中启用并禁用了某些功能。请帮助我。
在您的代码中检查这些属性,然后将其与Google库存图像进行比较。
System.getProperty("os.version"); // OS version
android.os.Build.VERSION.SDK // API Level
android.os.Build.DEVICE // Device
android.os.Build.MODEL // Model
android.os.Build.PRODUCT // Product
几乎所有自定义ROM都植根于所有自定义ROM,因此您还可以检查设备是否植根。以下是检查root的代码。
public static boolean isRooted() {
// get from build info
String buildTags = android.os.Build.TAGS;
if (buildTags != null && buildTags.contains("test-keys")) {
return true;
}
// check if /system/app/Superuser.apk is present
try {
File file = new File("/system/app/Superuser.apk");
if (file.exists()) {
return true;
}
} catch (Exception e1) {
// ignore
}
// try executing commands
return canExecuteCommand("/system/xbin/which su")
|| canExecuteCommand("/system/bin/which su") || canExecuteCommand("which su");
}
// executes a command on the system
private static boolean canExecuteCommand(String command) {
boolean executedSuccesfully;
try {
Runtime.getRuntime().exec(command);
executedSuccesfully = true;
} catch (Exception e) {
executedSuccesfully = false;
}
return executedSuccesfully;
}
ps-仿真器是扎根的设备。在实际设备上测试
System.getProperty("os.version"); // OS version
android.os.Build.VERSION.SDK // API Level
android.os.Build.DEVICE // Device
android.os.Build.MODEL // Model
android.os.Build.PRODUCT // Product
使用此功能,然后将其与Google库存图像进行比较。一件事,几乎有99%的自定义ROM已扎根,因此您可以检查设备是否已植根。Roottools库提供了简单的方法来检查根:
rottools.isrootavailable((
您可以参考以下链接以获取更多详细信息如何找出ROM提供商是谁?对于Roottools,使用以下链接
https://github.com/stericson/roottools
尝试使用google saftynet服务(它检测到启动加载程序是否已解锁,要安装自定义的ROM引导程序必须被解锁(...可以欺骗它,但不知道很多用户知道如何做那。如果您仅检测到root,则应用程序也不会在库存ROM上运行,