2011-09-11 19 views
1

我在Android中有一個未安裝的分區,因爲它沒有文件系統,我需要在其中寫入一個字符串。我嘗試了三種不同的方法,只有第一種(從adb)起作用。我需要在程序控制下這樣做,這是第二種和第三種方法所做的,但都是失敗的。我嘗試將系統權限添加到我的應用程序,但這沒有幫助。我需要root權限才能從程序中執行此操作嗎?在Android中使用Java訪問原始分區

第一種方法 -

adb shell "echo test > /cache/command" 
adb shell dd if=/cache/command of=/dev/block/mmcblk3p3 bs=4096 seek=1 

第二種方法 -

java.lang.Process p = Runtime.getRuntime().exec(
"dd if=/cache/command of=/dev/block/mmcblk3p3 bs=4096 seek=1"); 

第三種方法 -

File fileName = new File("/dev/block/mmcblk3p3"); 
String cmd = "test"; 
FileOutputStream fos = new FileOutputStream(fileName); 
fos.write(cmd.getBytes(), 4096, cmd.length()); 
fos.flush(); 

的第二種方法沒有反饋,即使它沒有工作。第三種方法提供以下輸出:

W/System.err(1014): java.io.FileNotFoundException: 
/dev/block/mmcblk3p3 (Permission denied) 
+0

爲什麼要寫入沒有文件系統的分區? –

+0

給予/ dev/block/mmcblk3p3的權限 –

+0

@Hemal:此分區用於Android和引導加載程序之間的通信,因此它沒有文件系統。 – Ravi

回答

1

我應該警告您可能會對應用程序無法訪問的分區啓用自由許可的風險。說了這麼多,並假設你知道的風險,你可以做的是改變的權限,如果你想這樣做永久您可以添加

chmod 0666 /dev/block/mmcblk3p3 

init.rc。 有些部分包含其他chmod命令,您可以放置​​其中。

+0

謝謝,這是做的伎倆! – Ravi