如何获取build.prop值?

时间:2012-03-30 04:40:21

标签: android

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

8 个答案:

答案 0 :(得分:4)

您可以考虑使用@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");

答案 1 :(得分:2)

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

答案 2 :(得分:2)

使用android.os.Build类,请参阅http://developer.android.com/reference/android/os/Build.html,但如果没有root访问权限就无法编辑它。

答案 3 :(得分:2)

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

答案 4 :(得分:2)

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

  

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

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

这种方法的优点:

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

缺点:

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

答案 5 :(得分:2)

尝试一下

CREATE TABLE #tmp_1(col1 DECIMAL(2,0))
CREATE TABLE #tmp_2(col2 DECIMAL(12,0))
CREATE TABLE #errors (error_value VARCHAR(MAX))
INSERT INTO #tmp_2 VALUES (1222.00)
INSERT INTO #tmp_2 VALUES (122222.00)
INSERT INTO #tmp_2 VALUES (1.00)

DECLARE @rec DECIMAL(12,0)

DECLARE get_errors CURSOR FOR SELECT col2 FROM #tmp_2 
OPEN get_errors
FETCH NEXT FROM get_errors INTO @rec
WHILE @@fetch_status <> -1
BEGIN
BEGIN TRY
INSERT #tmp_1 VALUES (@rec)
END TRY
BEGIN CATCH
INSERT INTO #errors VALUES (@rec)
END CATCH
        FETCH NEXT FROM get_errors INTO @rec
END
CLOSE get_errors
DEALLOCATE get_errors

GO 
SELECT * FROM #tmp_1
SELECT * FROM #errors
DROP TABLE #tmp_1
DROP TABLE #tmp_2
DROP TABLE #errors

答案 6 :(得分:1)

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

答案 7 :(得分:0)

使用隐藏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副本会更安全。