Android: как выполнить chmod на корневых элементах

Я бы выполнил команду на моем корневом устройстве Android 2.1

String path = "/data/data/com.android.providers.settings/databases/settings.db"; Runtime.getRuntime(). Exec ( "/system/bin/chmod -f 777" + path);

Но эта команда ничего не делает в целевом файле. Любая идея?

Ответ 1

Сначала вам нужно запустить среду выполнения как пользователь root. Существует класс ShellInterface, который вы можете использовать из источника MarketEnabler, доступного в Google Code. Хотя имейте в виду, что этот исходный код выпущен под GPL.

По сути, вам нужно определить, где ваша команда su, и создать своего рода оболочку, используя входной поток и выходной поток для STDIN и STDOUT. С их помощью вы можете нажать свои команды на свой "терминал". Когда вы закончите все свои команды, сбросьте свой буфер и дождитесь завершения выполнения Runtime. Как только он будет завершен, вы можете закрыть свой интерфейс времени выполнения.

Затем взгляните на файл, который вы попытались создать/изменив/etc, чтобы убедиться, что все работает правильно.

Ответ 2

Библиотека RootTools предлагает простые методы проверки корневых и корневых команд:

RootTools.isRootAvailable()
List<String> output = RootTools.sendShell(command);

http://code.google.com/p/roottools/