Я пытаюсь выполнить команду смахивания из своего Apk, используя
process = Runtime.getRuntime (). exec ("пролистывание ввода оболочки adb 250 300-800 300");
Но во время выполнения ничего не происходит и ошибок не возникает.
Нужно ли мне что-то добавлять в манифест, чтобы он заработал?
2 ответа
Вы можете выполнить / system / bin / input только от имени пользователя root или оболочки ; это не будет работать в приложении. Команда не должна начинаться с "adb shell" при запуске из приложения.
Чтобы запустить команду от имени пользователя root:
Process su = null;
try {
su = Runtime.getRuntime().exec("su");
su.getOutputStream().write("input swipe 250 300 -800 300\n".getBytes());
su.getOutputStream().write("exit\n".getBytes());
su.waitFor();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (su != null) {
su.destroy();
}
}
Вам также следует проверить сторонние библиотеки для обработки команд su: https://android-arsenal.com/ подробнее / 1/451
Вам нужно поместить разрешение INJECT_EVENTS в свой манифест:
uses-permission android:name="android.permission.INJECT_EVENTS"
Похожие вопросы
Связанные вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.