Как я могу программно реализовать щелчок в моем приложении android? - PullRequest
2 голосов
/ 02 августа 2020

Я хочу программно реализовать щелчок по моему приложению. Для этого я подумал о реализации команды adb для сенсорного ввода. Команда: adb shell input tap x y Эта команда работает в моей оболочке adb, но я не могу понять, как реализовать ее программно. Я попробовал следующий фрагмент кода:

private void runShellCommand(String command) throws Exception {
        Process process = Runtime.getRuntime().exec(command);
        process.waitFor();
        }

Но я получаю эту ошибку в отладчике:

java.io.IOException: Cannot run program "adb": error=13, Permission denied

Может ли кто-нибудь помочь мне с этим!

PS: Даже если вы знаете другие методы программного касания экрана с помощью предоставления координат x и y, пожалуйста, помогите!

Ответы [ 3 ]

1 голос
/ 02 августа 2020

Я предполагаю, что вы хотите прикоснуться к чему-то внутри своего приложения.

Захватите ACTION_DOWN MotionEvent (через отладчик из действия касания) и отметьте его свойства (время простоя, событие время и мета-состояние). Это нужно будет сделать только один раз, чтобы выяснить, какие значения следует использовать для имитации типичного события касания.

В тестовой программе создайте новый MotionEvent с помощью MotionEvent.obtain ()

MotionEvent newTouch = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_DOWN,
    x, y, metaState);

Отправьте событие в ваше представление:

view.dispatchTouchEvent(newTouch);

Вы можете попробовать это. Я использую это для своего собственного тестового приложения android.

0 голосов
/ 02 августа 2020

Вы можете использовать Selendroid для автоматизации, как указано в документации :

WebDriver driver = new SelendroidDriver(capa);
WebElement inputField = driver.findElement(By.id("my_text_field"));

Затем щелкнув указанный элемент, как указано здесь :

new Actions(driver).sendKeys(SelendroidKeys.MENU).perform();

Поддерживаемые взаимодействия элементов:

Получить текст

Щелкните

Отправить ключи Получить атрибут элемента

Очистить

Выбрано

Отображено

Включено

Получить размер

Получить местоположение

0 голосов
/ 02 августа 2020
  1. Каждое приложение в Android запускается под отдельным пользователем, и эти пользователи не имеют права запускать adb. Таким образом, вы получаете «Permission Denied».
  2. Собственно adb и не нужен. Ваша команда просит adb вызвать оболочку для запуска input. Таким образом, вы можете выполнить input x y напрямую.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...