Обновления OTA для приложения Android владельца устройства (режим киоска)
Я могу сделать свое приложение, приложение владельца устройства через NFC, как упоминалось здесь. Теперь я хочу обновить приложение в прямом эфире, но я не смог найти метод без rooting.
Google предоставляет множество возможностей для предприятий по разработке приложений, как упомянуто здесь, но нигде не предоставляет способ обновить приложение через OTA.
Ищете решение.
Ответы
Ответ 1
Это просто чистое предположение, поскольку я никогда не пытался сам использовать API-интерфейс установщика пакетов:
Вы можете попытаться установить пакет установщика для приложения владельца устройства (используя PackageManager.setInstallerPackageName()
). Этот пакет установщика должен быть отдельным APK, подписанным с тем же сертификатом, что и владелец устройства APK.
getPackageManager().setInstallerPackage("<device.owner.package.name>", "<installer.package.name>");
Из вашего APK установщика вы можете использовать PackageInstaller
для подготовки обновления:
PackageInstaller pi = getPackageManager().getPackageInstaller();
int sessId = pi.createSession(new PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL));
PackageInstaller.Session session = pi.openSession(sessId);
OutputStream out = session.openWrite("app");
// .. write updated APK file to out
session.fsync(out);
session.commit(...);
session.close();
Я не уверен, что это молчаливо устанавливает ваше обновление (или если это работает вообще так, как я ожидал).
Ответ 2
Создайте службу для проверки фона для обновления. если обновление доступно, загрузите apk файл и напишите его на каком-нибудь, где sdcard. подождите несколько секунд, чтобы написать полностью флеш. затем вызовите следующий код, чтобы установить новый apk.
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(fileName)), "application/vnd.android.package-archive");
startActivity(intent);
fileName
- это путь вашего нового файла apk на SD-карте.
Ответ 3
Вы можете использовать Play Store для обновления своих приложений:
-
Приложение владельца устройства Provision через NFC, как и вы уже сделали.
-
Предоставьте обновленную версию (то же имя пакета, ту же подпись, номер версии) вашего устройства владельца устройства в Play Store.
-
В приложении Play Store на вашем устройстве найдите версию приложения Play Store и установите обновление.
-
Активируйте автоматические обновления для приложения владельца устройства в Play Маркете (на странице Play Store вашего приложения нажмите меню (три точки) и установите флажок для автоматического обновления.
Это довольно немного усилий для этапа подготовки, но устройство должно получать будущие обновления автоматически.
Ответ 4
Думаю, вы захотите стать партнерским приложением EMM/MDM - это похоже на приложение владельца устройства, но с расширенными привилегиями и API. Обычно OEM-производители, такие как Samsung/HTC, предоставляют скрытые API-интерфейсы для приложений-партнеров MDM для обновления приложений. Я не уверен, поддерживает ли Android for Work этот api.
Например, OEM-производители предоставляют api под названием updatePackage (String packageName), которые могут быть использованы клиентом MDM на устройстве для обновления пакета. Вы также можете использовать этот API для обновления приложения Device Owner.