Запросить приложение Android для обновления приложения, если текущая версия <> рыночная версия

Допустим, что приложение Android App версии 0.1 установлено на телефоне пользователя. Каждый раз, когда они запускают мое приложение, я хочу проверить, есть ли в Android Market другая версия, скажем, эта версия 0.2. Если существует несоответствие между этими двумя версиями, я хочу показать диалоговое окно, предлагающее пользователю обновить приложение.

Я полностью понимаю, что существует процедура уведомления с Android Market для пользователей, но, насколько это касается моих данных Analytics, не очень эффективно напоминать пользователям обновляться до новой версии приложения.

Любое понимание было бы очень полезно. Спасибо StackOverflowers, вы, ребята, рок!

Solutions Collecting From Web of "Запросить приложение Android для обновления приложения, если текущая версия <> рыночная версия"

Android Market – закрытая система и имеет только неофициальный api, который может сломаться в любой момент времени.

Лучше всего просто разместить файл (xml, json или простой текст) на своем веб-сервере, в котором вам просто нужно обновить текущую версию вашего приложения, когда вы публикуете его на Market.

Затем вашему приложению будет только fetche этот файл при запуске, проверяет, установлено ли в настоящее время приложение с более низким номером версии и отображает диалог, предупреждающий пользователя, что он отстает.

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

Если вы уже используете SDK Google Analytics, у вас есть и GTM.

В GTM вы можете определить значение в контейнере для вашего приложения, которое указывает вашу последнюю выпущенную версию. Например:

{ "latestAppVersion": 14, ... } 

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

 Container container = TagManager.getInstance(context).openContainer(myContainerId); long latestVersionCode = container.getLong("latestAppVersion"); // get currently running app version code PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0); long versionCode = pInfo.versionCode; // check if update is needed if(versionCode < latestVersionCode) { // remind user to update his version } 

Взгляните на эту библиотеку, которую вы можете использовать для запроса API Android Market

http://code.google.com/p/android-market-api/

Вы можете использовать эту Android-библиотеку: https://github.com/danielemaddaluno/Android-Update-Checker . Он направлен на предоставление повторно используемого инструмента для проверки асинхронно, если существует новое выпущенное обновление вашего приложения в магазине. Он основан на использовании Jsoup ( http://jsoup.org/ ), чтобы проверить, действительно ли существует новое обновление, анализируя страницу приложения в Google Play Store:

 private boolean web_update(){ try { String curVersion = applicationContext.getPackageManager().getPackageInfo(package_name, 0).versionName; String newVersion = curVersion; newVersion = Jsoup.connect("https://play.google.com/store/apps/details?id=" + package_name + "&hl=en") .timeout(30000) .userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6") .referrer("http://www.google.com") .get() .select("div[itemprop=softwareVersion]") .first() .ownText(); return (value(curVersion) < value(newVersion)) ? true : false; } catch (Exception e) { e.printStackTrace(); return false; } } 

И как функция «значение», следующая (работает, если значения находятся между 0-99):

 private long value(String string) { string = string.trim(); if( string.contains( "." )){ final int index = string.lastIndexOf( "." ); return value( string.substring( 0, index ))* 100 + value( string.substring( index + 1 )); } else { return Long.valueOf( string ); } } 

Если вы хотите только проверить несоответствие между версиями, вы можете изменить:

"Value (curVersion) <значение (newVersion)" со значением (curVersion)! = Value (newVersion) "

Чтобы пригласить приложение Android App для обновления, если текущая версия не соответствует рыночной версии, вы должны сначала проверить версию приложения на рынке и сравнить ее с версией приложения на устройстве. Если они разные, это может быть доступное обновление. В этом посте я записал код для получения текущей версии рынка и текущей версии на устройстве и сравнил их вместе. Я также показал, как показать диалог обновления и перенаправить пользователя на страницу обновления. Перейдите по этой ссылке: https://stackoverflow.com/a/33925032/5475941