Возможно ли выполнить команды adb через приложение для Android?
Может ли кто-нибудь сказать, могут ли команды adb
выполняться через мое приложение для Android. Если можно выполнить, как это можно реализовать?
- Android имитирует нажатие клавиши
- Android Sqlite select args с значениями int
- Как хранить большие капли в поставщике содержимого Android?
- Запретить скрытие адресной строки в мобильных браузерах
- Android: LocationManager vs Google Play Services
- Программная клавиатура изменяет размер фонового изображения на Android
- Настройка настраиваемого имени ActionBar из fragmentа
- Как вручную включить внешний пакет aar с помощью новой системы сборки Gradle Android
Вы можете сделать это с помощью этого:
Process process = Runtime.getRuntime().exec("your command"); BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(process.getInputStream()));
Не забудьте окружить его инструкцией try and catch.
Редактировать:
@Phix прав, ProcessBuilder будет лучше использовать.
Обычные приложения для Android имеют разные привилегии для процессов, запущенных через adb
, например, процессы, запущенные через adb
, разрешены для захвата экрана, тогда как обычных приложений нет. Таким образом, вы можете выполнять команды из своего приложения через Runtime.getRuntime().exec()
, но у них не будет таких же привилегий, как если бы вы выполнили из adb shell
.
adb shell, вызванный в Runtime.getRuntime (). exec не работает под пользователем оболочки. Он предоставляет оболочку, но с тем же владельцем процесса (например, u0_a44). Вот почему вся команда не работает.
проведение
Runtime.getRuntime().exec("adb shell input keyevent 120");
Я получил следующую ошибку: java.io.IOException: Не удается запустить программу «adb»: error = 13, Permission denied.
проведение
Runtime.getRuntime().exec("adb shell input keyevent 120");
Нет ошибки, но в то же время мой запрос не обрабатывается, чтобы сделать снимок экрана.
Я узнал, что это работало в более ранних версиях Android, но позже оно было удалено. Хотя я не могу предоставить источник здесь, почему он не работает.
Надеюсь, это помогает кому-то вроде меня, который пытается использовать этот подход, чтобы сделать снимок экрана, когда приложение не находится на переднем плане.