Я разрабатываю приложение, которое не предназначено для выпуска в качестве стандартного приложения. Он будет работать на одном корневом устройстве.
Мне нужна возможность записи в файл в каталоге /sys/. Файл, о котором идет речь, принадлежит пользователю root и имеет права доступа -rw-rw-rw-.
Я знаю, что могут быть ограничения на виртуальную машину, в которой выполняется мой код, которые запрещают запись в эту область файловой системы, но я наблюдал, как это делает другое приложение.
Это возможно? Как это может быть достигнуто? Не имеет значения, нужно ли рутировать телефон (я использую dev).
Я рассмотрел простое использование FileWriter для записи в файл, что вызвало следующую ошибку на .flush()
:
java.io.IOException: Invalid argument
at org.apache.harmony.luni.platform.OSFileSystem.writeImpl(Native Method)
Я также пытался выполнить команду оболочки из Java как с «su», так и без нее. Который вернул «запрос отклонен» и «Отказано в доступе» соответственно.
Process process = Runtime.getRuntime().exec("echo 'hello' > /sys/file");
Наконец, я попытался использовать NDK и JNI в случае, если C каким-то волшебным образом удалось записать в этот файл. При попытке fflush
в этот файл я получаю EOF (что означает, что произошла ошибка).
Все предложения очень приветствуются!