我如何在我的应用程序中编辑/ system / Directory中的文件?
我必须让系统R / W写吗?
我试过了:
process = Runtime.getRuntime().exec("su");
os = new DataOutputStream(process.getOutputStream());
os.writeBytes("mount -o remount,rw /system\n");
os.writeBytes("exit\n");
os.flush();
process.waitFor();
以及许多其他人,但没有成功。
如果有人可以帮助我,我非常感谢! :) 此外,如果我最终成功,它将适用于所有root电话? 或者在某些手机中有所不同?
答案 0 :(得分:6)
我用:
os.writeBytes("mount -o remount rw /system/\n");
//instead of a comma, I have a space.
//When I tried it with a comma, mine didn't work either.
这使我能够成功登上。
如果你在此之后退出,当然它将无法正常工作。您必须保持在同一个进程中并使用linux命令编辑该文件。
我不知道如何编辑文件,但我建议使用Google搜索如何在linux终端中执行操作,然后将正确的代码放在os.writeBytes("CODE_HERE");
尽管就安装过程而言,我不知道该命令是否会普遍适用。幸运的是,可以在我的设备上工作。
修改强>
我现在使用RootTools:http://code.google.com/p/roottools/downloads/list
这是Wiki页面:
http://code.google.com/p/roottools/w/list
但我现在正在使用:
RootTools.remount(file, mountType);
//For example:
RootTools.remount("/system/", "rw");
我认为这是普遍的
答案 1 :(得分:1)
编辑:以下所有版本的代码都不能将系统安装为RW。 *阅读以下评论以了解原因。 解决这个问题并不是一个简单的命令。
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());
只安装built.prop RW,然后将其安装回RO。 虽然如果你改变它,你可能会搞砸你的设备!小心!