编辑:以下所有版本的代码都不会将系统安装为 RW。
*阅读下面的 cmets 以了解原因。
解决这个问题不是一个简单的命令。
Edit1:我打开超级用户 apk,设置选项卡,并在最后一项“点击”,以更新 su 二进制文件。有了这个更新,下面的一切都不起作用了。
Edit2:在这里开始了与我自己的完整对话。当前最新二进制文件的修复位于帖子底部
================================================ ====================================
了解如何做到这一点!第二天的努力,终于找到了!!!!!!
尝试了几件事,答案是简单的更改模式,
我做了什么:
第一个版本代码:(不起作用)
String[] mountRW = { "su", "-c",
"chmod 777 /system/etc/build.prop"};
String[] mountRO = {"su", "-c",
"chmod 755 /system/etc/build.prop"};
//TODO REMOVE testing purposes
File file2 = new File("/system/build.prop");
//Make file Read-Write
process = Runtime.getRuntime().exec(mountRW);
process.waitFor();
//TODO REMOVE testing purposes
Log.d("MOUNT RW?", "RW WRITABLE? "+ file2.canWrite());
///////////////////////
// process the file
//////////////////////
// After editing finish,
//make Read Only file again
process = Runtime.getRuntime().exec(mountRO);
process.waitFor();
//TODO REMOVE
Log.d("MOUNT RO?", "RO WRITABLE? "+ file2.canWrite());
我没有粘贴一些 try catch 案例。
我还遇到了另一个问题。我在版本 2 中解决了这个问题。小问题是,我要求一个特定的 su 命令,而用户必须接受 RO 的 SU cmd,RW 的 SU cmd。 . 和另一个时间在我的程序中的其他东西。
在第二个版本中,我使用通用的 su 命令,因此用户必须接受一次 SU 权限,并且我使用输出流。
代码版本 2(推荐)(不起作用):
String mountRW = "chmod 777 /system/build.prop";
String mountRO = "chmod 755 /system/build.prop";
//TODO REMOVE
File file2 = new File("/system/build.prop");
//Make file Read-Write
process = Runtime.getRuntime().exec("su"); //Generic SU Command
os = new DataOutputStream(process.getOutputStream());
os.writeBytes(mountRW + " \n");
os.writeBytes("exit\n");
os.flush();
process.waitFor();
//TODO REMOVE
Log.d("MOUNT RW?", " RW WRITABLE? "+ file2.canWrite());
////////////////////////////
/// mod the file
///////////////////////////
// After editing finish, make Read Only file again
process = Runtime.getRuntime().exec("su");
os = new DataOutputStream(process.getOutputStream());
os.writeBytes(mountRO + " \n");
os.writeBytes("exit\n");
os.flush();
process.waitFor();
//TODO REMOVE
Log.d("MOUNT RO?", "RO WRITABLE? "+ file2.canWrite());
- 这两个代码都需要您设备上的 Root。
- 两个版本均不包含捕获案例。 (Eclpise 会为您找到它们)
- 检查您的 logcat(adb logcat),看看它确实有效!
- 使用最新的 su 二进制文件,此代码略有变化。更改模式命令需要 4 位数字。 0777 用于 rw 权限,0755 用于 ro 权限!
- 此代码本身不会对您的设备造成任何影响。
只有它挂载built.prop RW,然后再挂载回RO。
虽然如果你改变它,你可能会破坏你的设备!保重!