以编程方式检查android中的自定义rom

时间:2017-05-03 07:23:47

标签: android mobile rom

我想在我的应用中检查设备是否有自定义ROM。有了这个,我启用并禁用了我的应用程序中的一些功能。请帮帮我。

3 个答案:

答案 0 :(得分:1)

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库提供了检查root的简单方法:

RootTools.isRootAvailable()

您可以参考以下链接了解更多详情 How to find out who the ROM provider is? 对于RootTools,请使用以下链接

https://github.com/Stericson/RootTools

答案 1 :(得分:0)

在代码中检查这些属性,然后将其与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都是root用户,因此您还可以检查设备是否已植根。下面是检查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 - 模拟器是一个有根的设备。在实际设备上测试

答案 2 :(得分:0)

尝试使用 Google 的 Saftynet 服务(它检测引导加载程序是否已解锁,要安装自定义 Rom 引导加载程序必须解锁)...它可以被欺骗,但没有多少用户知道如何做到这一点。如果您只检测到 root,则当股票被 root 时,该应用也不会在股票 Rom 上运行。