2016-05-23 2 views
0

Я создаю приложение, которое существенно упрощает работу устройства Android в режиме киоска. (Да, добровольно). Часть приложения должна быть в состоянии проверить, доступно ли новое обновление для себя или нет. Я провел несколько часов исследований, но у меня много вопросов. Мои вопросы: 1) Я попытался разместить файл на Dropbox, но когда загрузка .apk (если соединение не отключается), ничего не происходит. Не требуется устанавливать или обновлять приложение. Почему это? 2) Что мне нужно включить в мой код, чтобы повторить попытку запроса, если время ожидания запроса? 3) Как я могу разместить файл? Должно ли это быть через Dropbox, MediaFire или через выделенный выделенный сервер?Как проверить наличие обновлений приложения в рамках процесса установки приложения

Поскольку я только начинаю с этой идеи автоматического обновления, я предполагаю, что многие другие тоже на моем месте. Спасибо всем!

+0

Есть ли причина, по которой вы не можете размещать ее в Google Play и позволить ей управлять любыми обновлениями? – adelphus

+0

Да, он должен оставаться закрытым и обычным рынком. Я также изучал андроид для работы, но я бы предпочел пойти с бесплатным/более дешевым вариантом – Ethan

+0

. Он стоит $ 25 долларов, чтобы быть разработчиком Google для неограниченного использования, размещать apk в игровом магазине, управлять альфа-бета-версией и общим развертыванием .. any почему вы не хотите размещать его в Google Play? – t0mm13b

ответ

0

Это было на самом деле относительно просто, все, что я должен был сделать:

  1. Используйте JSoup тянуть текущий номер версии в автономном режиме
  2. Сравните это число с текущим номером версии
  3. Скачать новая версия из онлайн (размещена DropBox)
  4. Вызвать намерение установить недавно загруженный .apk И все! Простой и эффективный!
0

Если вы хотите сделать это вручную, есть небольшая работа, но это возможно. В целом вам необходимо:

  • Скачайте APK (откуда бы вы его размещали). Сохраните APK как файл - либо в области личных данных приложения, либо на внешнем хранилище. Есть questions on SO, чтобы помочь в этом.
  • Проверьте, не изменилась ли APK от текущей версии - должен использоваться простой хэш SHA-1 файлов APK-файла. Сравните это против хэша APK файл в настоящее время установлено (вы можете получить установленный APK местоположения через ApplicationInfo.sourceDir)
  • Если загруженный APK хранится в ваших личных данных области, пометить файл как мир считываемого - это важно, потому что установщик пакета Android не сможет установить приложение, если он не может получить к нему доступ.
  • Если хэш файла APK изменился, start an intent to launch the package installer. Пользователю будет предложено выполнить обновление (вы ничего не можете сделать, чтобы установить его тихо, если вы не измените ОС Android).
+0

Где я могу разместить файл, который позволит автоматически загружать, не запрашивая пользователя? И при автоматической загрузке я не имею в виду диалог, который запрашивает пользователя после того, как он уже был загружен, я имею в виду первый первый, который обычно находится на веб-сайте хостинга? – Ethan

+0

APK - обычный обычный почтовый файл - вы можете разместить его на любом сервере, который позволяет публичный доступ в Интернет. Если у вас возникли проблемы с Dropbox, попробуйте несколько [альтернатив] (http://www.cloudwards.net/top-10-secure-dropbox-alternatives/) – adelphus

+0

Но это заставит пользователя фактически нажать кнопку загрузки внутри на самом ли сайте? Мне нужно, чтобы обновление загружалось и устанавливалось с помощью кнопки в моем приложении. Ничего внешнего (хром, браузер и т. Д.) Не может появиться и запросить пользователя. Я заметил, что если я изменил ссылку загрузки из dropbox с 'https: www.dropbox.com/s/garbage/myfile.apk? Dl = 0' на' dl = 1', файл автоматически начнет загружаться на окнах, но он ничего не делает на android. Он действительно возвращает 404. Любые идеи, почему? – Ethan