Обновления 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.