#android #permissions #android-things
#Android #разрешения #android-вещи
Вопрос:
В связи с отключением консоли Android Things в 2022 году я хотел бы знать, пытался ли кто-нибудь из вас обновить приложение через USB.
Я безуспешно пытался:
Первая попытка:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(FileProvider.getUriForFile(this, this.getApplicationContext().getPackageName() ".provider", layoutPath), "application/vnd.android.package-archive");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(intent);
Результат:
Установщик пакетов не может установить приложение из-за MANAGE_UNKNOWN_APP_SOURCES. Я не могу изменить этот флаг в MANAGE_UNKNOWN_APP_SOURCES.
Вторая попытка:
Log.e(TAG,layoutPath.getPath());
Runtime.getRuntime().exec("chmod 777 " layoutPath.getPath());
Runtime.getRuntime().exec("pm install -r " layoutPath.getPath());
Результат:
Permission Denial: runInstallCreate from pm command asks to run as user -1 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL
У вас есть идеи получше?
Ответ №1:
Вы можете устанавливать или обновлять приложения на своем устройстве вручную с помощью Android Debug Bridge (adb). Версии вашего приложения, установленные с помощью этого метода, будут переопределять любую существующую версию, включенную в заводской образ, если вы указали более высокую версию.
Для получения более подробной информации о подключении к вашему конкретному устройству с помощью ADB см. Руководства по оборудованию.
Комментарии:
1. Спасибо за ответ. Это хороший способ обновления приложения, но это невозможно, если устройство уже есть на рынке по всему миру.
2. Вероятно, лучше использовать следующую команду в процессе установки: adb shell appops set <mypackage> REQUEST_INSTALL_PACKAGES разрешить