如果当前版本为<>市场版本,则提示安卓应用程序用户更新应用程序

比方说我的Android应用程序版本0.1目前安装在用户的手机上。 每次他们启动我的应用程序我想检查是否有一个不同的版本可用在Android电子市场让我们说这个版本是0.2。 如果这两个版本之间不匹配,我想显示一个对话框,提示用户升级应用程序。

我完全理解Android Market本身对用户存在通知程序,但就我的Analytics(分析)数据而言,提醒用户升级到新版本的应用程序并不是非常有效。

任何见解都会非常有帮助。 谢谢StackOverflowers,你们摇滚!

Solutions Collecting From Web of "如果当前版本为<>市场版本,则提示安卓应用程序用户更新应用程序"

Android电子市场是一个封闭的系统,只有一个非官方的api可能会在任何时候打破。

你最好的办法就是在你的web服务器上放置一个文件(xml,json或者简单的文本),当你在市场上发布你的应用程序时,你只需要更新它的当前版本。

然后,您的应用程序将只需在启动时取出该文件,检查当前安装的应用程序是否具有较低的版本号,并显示一个对话框来警告用户他是滞后的。

如果您希望避免让后端服务器存储当前应用程序版本(如接受的答案中所build议的那样),则可以使用另一个选项,即使用Google跟踪代码pipe理器 (GTM)。

如果您已经在使用Google AnalyticsSDK,那么您也可以使用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 } 

查看您可以用来查询Android电子市场API的库

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

你可以使用这个Android库: https : //github.com/danielemaddaluno/Android-Update-Checker 。 它旨在提供一个可重复使用的工具来asynchronous检查,如果在商店中存在任何更新的应用程序发布更新。 它基于使用Jsoup( http://jsoup.org/ )来testing是否真正存在parsingGoogle Play商店中的应用程序页面的新更新:

 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; } } 

而作为“价值”function以下(如果价值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 ); } } 

如果你只想validation版本之间的不匹配,你可以改变:

“value(curVersion)<value(newVersion)”与“value(curVersion)!= value(newVersion)”

如果当前版本不等于市场版本,提示Android App用户更新应用程序,则应首先检查市场上的应用程序版本,并将其与设备上的应用程序版本进行比较。 如果它们不同,则可能是可用的更新。 在这篇文章中,我写下了获取设备上当前版本的市场和当前版本的代码,并将它们进行比较。 我还展示了如何显示更新对话框并将用户redirect到更新页面。 请访问此链接: https : //stackoverflow.com/a/33925032/5475941