Как отправить текст с пробелом в параметре командной строки Android UIAutomator -e

Я хочу знать, как отправить текст с пробелом в опции Android UIAutomator -e (пара имя-значение)

Для примера:

adb shell uiautomator runtest LaunchSettings.jar -c com.uia.example.my.LaunchSettings

хочу отправить лайк

adb shell uiautomator runtest LaunchSettings.jar -c com.uia.example.my.LaunchSettings -e appName Temple Run

Но получая сообщение об ошибке, например:

Неподдерживаемый автономный параметр.

пытался как «Temple Run» или «Temple Run», но бесполезно.

Пожалуйста, предложите


person Ganesh Sonthi    schedule 28.03.2014    source источник
comment
Почему вы вообще хотите передать AppName вот так?   -  person Smriti    schedule 28.03.2014
comment
привет Смрити, есть много применений. Простой пример: я хочу написать файл jar, который откроет любое приложение, отправив имя приложения. Он будет искать это имя приложения, указанное в командной строке, и откроет его.   -  person Ganesh Sonthi    schedule 28.03.2014
comment
Я сомневаюсь, что через это можно напрямую запустить приложение. Если вы хотите запустить приложение -› вы также можете написать код для этого. Это не работает?   -  person Smriti    schedule 29.03.2014
comment
Пожалуйста, игнорируйте запуск приложений и т. д. Это всего лишь пример, и я смогу об этом позаботиться. Мне нужен метод для передачи пробела из командной строки. это моя основная проблема.   -  person Ganesh Sonthi    schedule 29.03.2014


Ответы (1)


    String defaultAppName = "My super App";

    String toAppName = getParams().getString("appName"); //pass app name with 'appName' key

    if (toAppName != null) {
        toAppName = toAppName.replace("0"," "); //use 0 instead of space in app name
        defaultAppName=toAppName.trim();
    }

Приведенный выше код по умолчанию будет «Мое супер-приложение», если при выполнении этого теста не будет передана опция -e (пара «имя-значение»).

Чтобы передать аргументы с пробелом, например, «мое суперприложение», в соответствии с приведенным выше кодом, необходимо вставить 0 для каждого пробела.

Чтобы передать 'my super dooper app' в качестве аргумента приведенному выше коду, нужно отправить use:

-e appName "my0super0dooper0app"

В твоем случае:

 adb shell uiautomator runtest LaunchSettings.jar -c com.uia.example.my.LaunchSettings -e appName Temple0Run

(Вместо «0» вы можете вставить любой буквенно-цифровой символ в качестве заполнителя, как показано в примере ниже)

UiAutomator не понимает параметры командной строки с пробелом, &, ‹, > , (,) , ", ' , а также некоторые символы Юникода. В таком случае нужно заменить заполнитель в командной строке на нужный символ.

пример:

if (toParam != null) {
        toParam = toParam.replace("0space0", " "); //insert 0space0 in command line parameters for every space
        toParam = toParam.replace("0amper0", "&"); //insert 0amper0 in command line parameters for every &
        toParam = toParam.replace("0less0", "<"); //insert 0less0 in command line parameters for every <
        toParam = toParam.replace("0more0", ">"); //insert 0more0 in command line parameters for every >
        toParam = toParam.replace("0openbkt0", "("); //insert 0openbkt0 in command line parameters for every (
        toParam = toParam.replace("0closebkt0", ")"); //insert 0closebkt0 in command line parameters for every )
        toParam = toParam.replace("0onequote0", "'"); //insert 0onequote0 in command line parameters for every '
        toNumber = toParam.trim();
    }
person BitterPlutonium    schedule 30.03.2014
comment
Превосходно. Большое спасибо BitterPlutonium. Хотя это не решение из-за ограничений самого кода UIAUtomator, этот обходной путь решил мою проблему. Большое спасибо. - person Ganesh Sonthi; 31.03.2014
comment
@BitterPlutonium Я создал пример проекта и скомпилировал его для создания файла JAR. Однако при запуске с использованием uiautomator я получаю следующее: INSTRUMENTATION_RESULT: longMsg = не нашел class test.Scree nshotRoutine по пути: DexPathList[[zip file /system/framework/android.test.run ner.jar, zip файл /system/framework/uiautomator.jar, zip-файл /data/local/tm p/AutomaticScreenshot.jar],nativeLibraryDirectories=[/system/lib]] INSTRUMENTATION_CODE: 0 Любая помощь? Спасибо - person Edison Spencer; 25.08.2015