編輯:以下代碼的所有版本都不會將系統掛載爲RW。 *閱讀下面的評論,看看爲什麼。 解決方案不是一個簡單的命令。編輯1:我繼續超級用戶apk,設置選項卡,並在最後一項「點擊」,以更新蘇二進制文件。隨着更新,下面的一切都無法正常工作。
編輯2:在這裏開始與我的自我對話。修正當前最新的二進制文件是在帖子的底部
================================= =================================================
找到了如何做到這一點!第二天的努力,終於找到了!!!!! 試了幾件事情,並回答是一個簡單的變化模式,
我做了什麼:
第一版代碼:(不工作)
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());
我沒有粘貼一些嘗試抓住案件。 另外我得到了另一個問題..我解決了它在版本2中。小問題是,我要求一個特定的su命令,並且用戶,必須接受SU cmd RO,SU cmd RW ..另一次在我的程序中的其他東西。 在第二版本I M使用通用su命令,所以用戶必須接受SU特權只有一次,和I M使用的輸出流。
代碼版本2(Recomended)(不工作):
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您的設備上。
- 這兩個版本都不包括catch case。 (Eclpise會發現他們對你)
- 查看您所在的logcat(亞行logcat),一看就知道它確實工作!
- 有了最新的蘇二進制,該代碼稍有變化。更改模式命令需要4位數字。 0777爲rw權限,0755爲ro權限!
- 此代碼由它自己,它無助於你的設備。
只有它安裝built.prop RW,然後再安裝回RO。 雖然如果你改變它,你可能會阻止你的設備!保重!
這通常是不是一個應該被attemptin g從android應用程序中執行。但要做到這一點,文件系統必須重新安裝可寫,然後或者文件必須從根進程被修改(其中一個Android應用程序是沒有,儘管它可能是能夠推出一個從屬進程以root權限),或有其權限被根進程改變,隨後可由諸如android應用的非根進程寫入。 –