Я пытаюсь создать простую программу на Java для установки APK на устройствах Android, подключенных через USB. Использование ABD вручную, то все работает отлично, но я хотел бы дать простой одну кнопку мыши установить опцию в моем приложении, но по какой-то причине код разве рабочий:Приложение Java для установки APK на android
try {
abdsourcesync = apkpath;
progress.setString("sync in progress");
System.out.println("Starting Sync via adb with command " + "adb"
+ " install -r " + apkpath);
Process process = Runtime.getRuntime().exec(
"adb" + " install -r " + apkpath);
InputStreamReader reader = new InputStreamReader(
process.getInputStream());
Scanner scanner = new Scanner(reader);
scanner.close();
int exitCode = process.waitFor();
System.out.println("Process returned: " + exitCode);
Процесс выходит со статусом 141, но нет другие ошибки, которые я вижу, но когда я смотрю на планшет, программа .APK не установлена. Я проверил, чтобы на устройстве было укорочено пространство и поддерживалось сторонние приложения и т. Д., Поэтому я уверен, что проблема связана с моей java, а не с устройством Android (как я уже сказал, если я запускаю ADB install -r самостоятельно от терминала, тогда все работает отлично).
Я искал в stackoverflow, но только нашел темы при установке APK из приложения Android, а не из приложения Java на рабочем столе.
Спасибо за помощь;
EDIT: Новый код выглядит следующим образом теперь с ProcessBuilder управления ADB вызова:
try {
abdsourcesync = apkpath;
progress.setString("sync in progress");
System.out.println("Starting Sync via adb with command " + "adb"
+ " install -r " + apkpath);
ProcessBuilder apksync = new ProcessBuilder("adb", " install -r ", apkpath);
apksync = apksync.redirectErrorStream(true);
/* Process process = Runtime.getRuntime().exec(
"adb" + " install -r " + apkpath);*/
Process process = apksync.start();
InputStreamReader reader = new InputStreamReader(
process.getInputStream());
Scanner scanner = new Scanner(reader);
scanner.close();
int exitCode = process.waitFor();
System.out.println("Process returned: " + exitCode);
АНК синхронизация просто не может сразу со статусом 1 возвращается к консоли.
Если я вручную указать местоположение АПК
ProcessBuilder apksync = new ProcessBuilder("adb","install","/home/geeky/Desktop/1.apk");
тогда я получаю ту же ошибку, что и исходный код, процесс возвращается статус 141, и после определенного периода времени, процесс синхронизации завершается, но .apk разве доступен на столе. Я также получаю тот же результат, если попытаюсь с APK намного меньше, чем мое приложение 700mb (как в 500kb .apk дает те же результаты).
EDIT3: Я также попытался сменить команду, чтобы нажать apk, и она работает без ошибок, apk будет без проблем работать с /mnt/sdcard/test/1.apk.
Энди
Кто-нибудь может предложить некоторую помощь по этому вопросу? – andy