我的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();
}
正如我已经告诉您的那样,在某些设备中它可以正常工作,而在某些设备中,我必须清除Google Play商店缓存。
理想的解决方案是什么?
谢谢。
答案 0 :(得分:1)
根本不建议您在做什么。
您正在尝试抓取网站,以搜索自动生成的特定HTML或CSS标记,这些标记可能会在每次构建播放网站时以及基于提供该页面的服务器的不同版本的PlayStore之间发生变化,这可能会破坏您的网站随时都有逻辑。
处理此情况的正确方法是使用In-app Update Library用于Android API> = 21(Lollipop),对于Android <21,使用您自己的后端以及REST API,可以查询该REST API以获取最新的可用版本(但您需要手动处理)。
您看到的问题可能与以下事实有关: 在某些情况下,逻辑会从PlayStore读取错误的值。东西 已在类似的库here和here中使用硬编码抓取功能进行了报告。