Страницы

Поиск по вопросам

понедельник, 12 ноября 2018 г.

Как можно программно обновлять своё приложение на android?

Добрый вечер, возник вопрос как сделать чтобы своё готовое android приложение установленное на машине пользователя могло обновляться если я дополнил интерфейс или устранил баг и т д, как это прописать в коде ?


Ответ

Стандартными средствами и без рута - никак.
Обычно это происходит так: вы выкладываете новую версию приложения в маркет, девайс юзера через маркет по расписанию (силами маркета, т.е. без вашего участия) проверяет все установленные приложения на предмет наличия обновлений и, если у юзера поставлены соответствующие настройки в маркете, маркет сам установит обновление

Согласно en-SO, если у вы программно скачаете новый apk, у коего версия больше версии текущего и идентичные пакет и сертификат, то вы можете запустить системный Intent на обновление приложения так:
Intent intent = new Intent(Intent.ACTION_VIEW); Uri uri = Uri.fromFile(new File(pathToApk)); intent.setDataAndType(uri, "application/vnd.android.package-archive"); startActivity(intent);
Далее юзер должен будет, по идее, подтвердить установку обновления.

Если девайс рутован, то можно вот так запустить установку apk через систему без участия юзера:
public static void installNewApk() { try { Runtime.getRuntime().exec(new String[] {"su", "-c", "pm install -r /mnt/internal/Download/fp.apk"}); } catch (IOException e) { System.out.println(e.toString()); System.out.println("no root"); } }

Реализовать же логику запуска этого интента/команды можно примерно так:
При первом запуске приложения запишите во внутренние ресурсы (sharedPrefereneces) номер версии. С к-л переодичностью проверяйте есть ли у вас где-то на к-л сервере новая версия. Если да - скачивайте apk и по завершении запускайте интент/команду.

Комментариев нет:

Отправить комментарий