2011-09-11 9 views
1

Androidにはファイルシステムを持たないためマウントされていないパーティションがあり、そのパーティションに文字列を書き込む必要があります。私は3つの異なる方法を試して、最初のもの(adbから)だけが働きます。私はプログラム制御の下でこれを行う必要があります。これは2番目と3番目の方法で行われますが、どちらも失敗します。私は自分のアプリにシステム権限を追加しようとしましたが、それは役に立たなかった。プログラムからこれを行うにはroot権限が必要ですか?Javaを使用したAndroidでのrawパーティションへのアクセス

まず方法 -

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

第2の方法 -

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

第3の方法 -

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

2番目の方法は、動作しなくてもフィードバックを提供しません。 3番目の方法では、次の出力が得られます。

+0

なぜファイルシステムを持たないパーティションに書き込みたいのですか? –

+0

/dev/block/mmcblk3p3に適切な権限を与えます。 –

+0

@Hemal:このパーティションは、Androidとブートローダー間の通信に使用されるため、ファイルシステムはありません。 – Ravi

答えて

1

アプリケーションからアクセスすべきでないパーティションに対して自由なアクセス許可を与える可能性があるリスクについて警告する必要があります。ことと、あなたがリスクを知っていると仮定すると言って、何を行うことができますすることで、永続的にそれをしたい場合は、init.rc

chmod 0666 /dev/block/mmcblk3p3 

を追加することができ、権限を変更することです。 あなたが置くことができる他のchmodコマンドを含むセクションがあります。

+0

ありがとう、トリックでした! – Ravi

関連する問題