如何在没有root访问权限的情况下获取build.prop
中找到的/system/build.prop
值?我该如何编辑它们?
答案 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”))并读取所有行。
这种方法的优点:
缺点:
答案 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副本会更安全。