標準アプリとしてリリースする予定のないアプリを開発しています。単一のルート化されたデバイスで実行されます。
/sys/ ディレクトリ内のファイルに書き込む機能が必要です。問題のファイルは root が所有しており、-rw-rw-rw- 権限を持っています。
ファイル システムのこの領域への書き込みを禁止するためにコードが実行される VM に制限がある可能性があることは承知していますが、別のアプリケーションが明らかにこれを行っていることを確認しました。
これは可能ですか?どのようにそれを達成することができますか?電話をルート化する必要があるかどうかは問題ではありません (私が使用している開発者はそうです)。
FileWriter を使用してファイルに書き込むだけで、次のエラーが発生することを調べました.flush()
。
java.io.IOException: Invalid argument
at org.apache.harmony.luni.platform.OSFileSystem.writeImpl(Native Method)
また、「su」の有無にかかわらず、Java からシェル コマンドを実行しようとしました。それぞれ「リクエストが拒否されました」と「許可が拒否されました」を返しました。
Process process = Runtime.getRuntime().exec("echo 'hello' > /sys/file");
最後に、C が魔法のようにこのファイルに書き込むことができた場合に備えて、NDK と JNI を使用してみました。このファイルにアクセスしようとするとfflush
、EOF (エラーが発生したことを意味します) が返されます。
すべての提案は大歓迎です!