Установите приложение GooglePlay из NFC

Работая с Lollipop, у меня есть приложение владельца устройства, которое установлено с NFC в момент времени.
Теперь мне нужно обрабатывать автоматические обновления для своего приложения, из Google Play, чтобы полагаться на стандартную систему обновления Android-приложений …

До сих пор я могу представить два способа сделать это, но не знаю, как обращаться с любым из них:

  1. В моей установочной константе NFC ДОПОЛНИТЕЛЬНОЕ ПРЕДОСТАВЛЕНИЕ УСТРОЙСТВА ADMIN PACKAGE DOWNLOAD LOCATION установите приложение прямо из Play Store вместо url на моем собственном сервере dev.
    Однако эта константа должна обрабатывать URL-адрес файла apk, и я не нашел официального способа установить apk прямо из Play Маркета? (Так как это будет производственное приложение, в будущем меня не интересуют хаки)
  2. Продолжайте установку apk с сервера dev, но затем разрешите App обновлять себя своим младшим братом, расположенным в Play Store с тем же именем пакета.
    Сказать по-другому: можно ли установить v1 apk из пользовательского местоположения, а затем разместить v2 в PlayStore … и позволить волшебству сбыться?

Я был бы рад услышать, сможет ли кто-нибудь поделиться опытом подобных процедур. Спасибо за прочтение!


EDIT после предложения @Stephan Branczyk, я мог бы провести еще несколько тестов, вот что я сделал и результаты:

1 – В инициализации NFC я заменил apk url snep: //my.app.packagename без везения; Он просто дает ошибку без особого объяснения.

2 – Я заменил этот URL такой ссылкой в ​​PlayStore: https://play.google.com/store/apps/details?id=my.app.packagename, но он дает ошибку контрольной суммы, если я использую контрольную сумму, вычисленную локально, или Контрольную сумму, указанную в деталях app GooglePlay. Он выглядит не так далеко от цели, но я не мог заставить его работать.

3 – Наконец, я вернулся к своему первому решению – самообслуживанию apk версии 1 … но на этот раз я попытался включить PlayStore в новую версию 2 приложения с тем же самым пакетом. Это привело меня к странные вещи:

  • Сначала мое приложение не появлялось нигде в локальном приложении PlayStore, но когда я искал его в Google Play, он появился с зеленым «установленным» значком, и он предложил мне сделать обновление … И я тоже.
  • Затем, после этого первого обновления вручную, приложение находится в версии 2, хорошо и лучше: оно хорошо отображается в моей PlayStore.
  • Оптимистично, я загрузил v3 приложения … просто чтобы узнать, будет ли мой PlayStore автоматически обновлять мое приложение (как это делается для всех остальных), но, к сожалению, не повезло: даже если мое приложение все еще указано в playstore, И предлагая кнопку «Обновить» … она никогда не обновляется сама по себе, как должна; Мне все равно нужно щелкнуть по нему вручную.

Разве это не странное поведение? Если у кого-то есть идеи об этом, мне действительно нужно будет полагаться на функциональность Play Store, но пока не повезло, и я не могу поверить, что распределение приложений Device-Owner несовместимо с PlayStore?


На всякий случай, FYI здесь – это код, который я использую:

try { Properties p = new Properties(); p.setProperty( DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, "my.app.packagename"); p.setProperty( DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION, "http://www.example.com/myDeviceOwnerApp.apk"); p.setProperty( DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM, "U55o3fO0cXQtUoQCbQEO9c_gKrs"); ByteArrayOutputStream bos = new ByteArrayOutputStream(); OutputStream out = new ObjectOutputStream(bos); p.store(out, ""); final byte[] bytes = bos.toByteArray(); NdefMessage msg = new NdefMessage(NdefRecord.createMime( DevicePolicyManager.MIME_TYPE_PROVISIONING_NFC, bytes)); return msg; } catch (Exception e) { throw new RuntimeException(e); } 

Запишите имя своего пакета как запись AAR в теге.

Чтобы подтвердить, что эта функциональность работает, используйте это приложение для записи тега.

Вам необходимо установить Base64, закодированный SHA1 или SHA256 (из M forward) apk в

EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM

Поле при предоставлении через NFC в противном случае предоставленное устройство не будет принимать URL-адрес для загрузки.

Также см. Этот ответ для правильной кодировки контрольной суммы.

Intereting Posts
Что представляет собой Android-эквивалент приложения для приложения UICatalog для iOS / iPhone? Галерея остановилась при обрезке изображения в kitkat Nexus7 Как получить источник данных для подсчета очков с помощью Google Fit Android API? Альтернатива PreferenceFragment для API совместимости с Android? Что такое хороший способ зарегистрировать пользователей из телефонного приложения? Почему Intent.createChooser () нуждается в BroadcastReceiver и как реализовать? Редактор темы Android Studio не отображает превью Контейнер, как div, span и т. Д. Android: java.lang.IllegalStateException: база данных xxx.db (conn # 0) уже закрыта Мое приложение для Android повреждает SD-карты Создание приложения для Android, которое создаст удаленный доступ между телефоном и ПК и сможет обмениваться файлами Разработка приложения для Android в отдельных рабочих модулях V.getTag () возвращает null вместо ViewHolder Обновить список просматриваемых ящиков Android: рисование холста в ImageView