我在我的android应用程序中有一个强制更新,它检查play商店中我的应用程序的版本名称,并用我的应用程序更新进行验证。如果google play商店版本与当前版本不同,它会显示更新的弹出消息。
当用户按下弹出窗口上的更新按钮时,它会重定向到play商店。问题是,在google play商店上,在某些设备中,不显示“更新”按钮,而显示“打开”按钮。
我尝试清除缓存,它起作用了。但是用户做同样的事情并不是很方便。在多少设备上,我必须继续这样做吗?
这是我下面的代码,用于验证应用程序版本:
protected String doInBackground(String... urls) {
try {
newVersion = Jsoup.connect("https://play.google.com/store/apps/details?id=" + <Your 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.hAyfc:nth-child(4) > span:nth-child(2) > div:nth-child(1) > span:nth-child(1)")
.first()
.ownText();
return newVersion;
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
这是重定向到google play商店的代码:
try {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setData(Uri.parse("market://details?id=" + context.getPackageName()));
startActivity(intent);
dialog.dismiss();
} catch (Exception e) {
e.printStackTrace();
}
正如我已经告诉你的,在某些设备上它工作得很好,而在一些设备上,我不得不清除谷歌应用商店的缓存。
什么是理想的解决方案?
提前感谢。
你正在做的事情根本不推荐。
您试图抓取网站搜索特定的超文本标记语言或CSS标签,这些标签是自动生成的,每次构建游戏网站时可能会有所不同,并且基于服务于页面的服务器的不同版本的PlayStore之间也会有所不同,这可能会在任何时候打破您的逻辑。
处理这种情况的正确方法是使用Android应用内更新库API
您看到的问题可能与您的逻辑在某些情况下从PlayStore读取错误值有关。这里和这里使用硬编码抓取的类似库中已经报告了一些内容。