【问题标题】:How to get the build.prop values?如何获取 build.prop 值?
【发布时间】:2012-04-13 19:00:13
【问题描述】:

如何在没有 root 访问权限的情况下获取在 /system/build.prop 中找到的 build.prop 值?如何编辑它们?

【问题讨论】:

标签: android


【解决方案1】:

您可能可以考虑在您的应用程序中使用@kangear 建议的SystemProperties.get("someKey"),使用如下反射:

public String getSystemProperty(String key) {
    String value = null;

    try {
        value = (String) Class.forName("android.os.SystemProperties")
                .getMethod("get", String.class).invoke(null, key);
    } catch (Exception e) {
      e.printStackTrace();
    }

    return value;
}

然后你可以在任何地方使用它:

getSystemProperty("someKey");

【讨论】:

    【解决方案2】:

    试试这个

    static String GetFromBuildProp(String PropKey) {
        Process p;
        String propvalue = "";
        try {
            p = new ProcessBuilder("/system/bin/getprop", PropKey).redirectErrorStream(true).start();
            BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
            String line;
            while ((line = br.readLine()) != null) {
                propvalue = line;
            }
            p.destroy();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return propvalue;
    }
    

    【讨论】:

      【解决方案3】:

      System.getProperty() 有帮助吗?作为替代方案,您可以在 Process 中执行 getprop 并检索其输出。

      【讨论】:

      • 不确定...它不会在我的/system/build.prop 中检索属性。
      • 在命令提示符下执行adb shell getprop 时是否看到该属性?
      • @BinoyBabu,作为替代方案,您可以在 Process 中执行 getprop 并检索其输出。
      • 这正是我正在做的。谢谢
      【解决方案4】:

      如: SystemProperties.get("ro.rksdk.version")

      【讨论】:

      • 没有看到任何这样的对象!
      • 这更适用于 AOSP 开发,而不是普通的应用程序开发。只需导入android.os.SystemProperties
      【解决方案5】:

      使用 android.os.Build 类,见http://developer.android.com/reference/android/os/Build.html,但是没有root权限你不能编辑它。

      【讨论】:

        【解决方案6】:

        我检查了多台设备,包括一些三星和 LG 设备以及 Nexus 4,最新的是配备 Android 6.0 的 Nvidia Shield 平板电脑。 在 /system/build.prop 上的所有设备上都给了我这个结果(当然,build.prop 的大小和日期不同):

        -rw-r--r-- root root 3069 2015-10-13 21:48 build.prop

        这意味着没有任何权限的任何人和任何应用程序都可以读取该文件。只有在写入非“ro.”值时才需要 Root。您可以创建一个新的 BufferedReader(new FileReader("/system/build.prop")) 并读取所有行。

        这种方法的优点:

        • 无需反射 (SystemProperties.get)
        • 无需生成进程并执行 getprop

        缺点:

        • 不包含所有系统属性(某些值,例如在启动时设置,仅在运行时可用)
        • 与 SystemProperties.get 相比,获取特定值并不方便

        【讨论】:

          【解决方案7】:

          在你的文件管理器的设置页面,将home设置为/system,然后你可以浏览系统文件夹并将build.prop复制并粘贴到sdcard。我仍在尝试 root 我的手机,但我在调整过程中没有问题(没有双关语)。

          【讨论】:

            【解决方案8】:

            使用隐藏 API 上的反射读取属性:

            static public String getprop(String key){
                try { Class c = Class.forName("android.os.SystemProperties");
                    try { Method method = c.getDeclaredMethod("get", String.class);
                        try { return (String) method.invoke(null, key);
                        }  catch (IllegalAccessException e) {e.printStackTrace();}
                        catch (InvocationTargetException e) {e.printStackTrace();}
                    } catch (NoSuchMethodException e) {e.printStackTrace();}
                } catch (ClassNotFoundException e) {e.printStackTrace();}
                return null;
            }
            

            要手动编辑它们(需要 Root),您应该使用 adb 提取它们:

            adb pull /system/build.prop
            

            在计算机上编辑它们,然后“安装”新的 build.prop:

            adb push build.prop /sdcard/
            adb shell
                mount -o rw,remount -t rootfs /system
                cp /sdcard/build.prop /system/
                chmod 644 /system/build.prop
            

            保留原始 build.prop 副本会更安全。

            【讨论】:

            • 您能否就如何在这种特殊情况下使用反射扩展您的评论?
            • SystemProperties.get() 无法像其他方法一样访问,它已被隐藏。为了“取消隐藏”,我们必须使用 Class.forName("android.os.SystemProperties") 强制转换一个中性类,提取它的方法并调用它。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-03-09
            • 1970-01-01
            • 2019-10-28
            • 2021-03-27
            • 2012-10-20
            • 2011-11-19
            相关资源
            最近更新 更多