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