Добрый вечер, возник вопрос как сделать чтобы своё готовое 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 и по завершении запускайте интент/команду.
Комментариев нет:
Отправить комментарий