Android: могу ли я использовать команду adb в своем приложении? - PullRequest
4 голосов
/ 15 марта 2011

все здесь моя проблема, я хочу запустить Android TestProject в своем приложении, но я не знаю, как, и я обнаружил, что могу запустить его с помощью команды, например, "adb shell am instrument -w com.demo.test / android.test.InstrumentationTestRunner "Итак, я попытался использовать в моем приложении: Runtime.getRuntime (). exec (" adb shell am instrument -w com.demo.test / android.test.InstrumentationTestRunner "); но имею:

03-15 02: 24: 42.246: WARN / System.err (3597): java.io.IOException: Ошибка при запуске exec ().Команда: [adb, shell, am, instrument, -w, com.demo.test / android.test.InstrumentationTestRunner] Рабочий каталог: null Среда: null ..... 03-15 02: 24: 42.246: WARN / System.err (3597): Причина: java.io.IOException: В доступе отказано, где моя проблема?

Ответы [ 3 ]

2 голосов
/ 15 марта 2011

Для этого уже есть API, Context.startInstrumentation:

Вот как реализована команда оболочки. Запустив команду оболочки, вы не сможете сделать больше, чем можете сделать в своем собственном процессе. Кроме того, никакие команды оболочки не являются частью SDK, поэтому все, что вы с ними делаете, может в какой-то момент сломаться на разных устройствах или версиях платформы.

0 голосов
/ 15 марта 2011

Вы должны использовать Context.startInstrumentation вместо adb. Например, из вашей активности запустите

startInstrumentation(new ComponentName("com.example.aatg.tc.test", "android.test.InstrumentationTestRunner"), null, null);
0 голосов
/ 15 марта 2011

Краткий ответ - нет. Длинный ответ, вроде.

Часть после команды 'adb shell' - это часть, которая выполняется, очень похоже на Runtime.getRuntime().exec(...)

Вы можете достичь того, чего хотите, используя Runtime.getRuntime().exec("instrument -w com.demo.test/android.test.InstrumentationTestRunner"). Я не использовал его сам, но вам может понадобиться передать аргументы в виде массива. Проверьте документацию .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...