Я пытаюсь выполнить команду смахивания из своего Apk, используя

process = Runtime.getRuntime (). exec ("пролистывание ввода оболочки adb 250 300-800 300");

Но во время выполнения ничего не происходит и ошибок не возникает.

Нужно ли мне что-то добавлять в манифест, чтобы он заработал?

1
Anonymous 5 Фев 2015 в 09:57

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

3
Jared Rummler 5 Фев 2015 в 09:08

Вам нужно поместить разрешение INJECT_EVENTS в свой манифест:



uses-permission android:name="android.permission.INJECT_EVENTS"

1
Jon Goodwin 13 Июл 2015 в 14:29