Android: как выполнить chmod на корневых устройствах

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

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

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

3 ответа

Решение

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

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

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

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

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

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

Бао Ле Я полагаю, что вы пытаетесь сбросить команды оболочки в приложении для Android, здесь ( Запуск собственного кода Android в вашем приложении для Android) - вот несколько способов запуска команды из приложения.

Другие вопросы по тегам