Android 从谷歌商店获取应用程序版本和最新信息
我当前的代码可以很好地从google商店获取当前版本, 但是,有没有办法在同一个响应中同时获得当前版本和新内容? 如果应用程序在play store上更新,并且用户仍然使用旧版本,我想建议用户进行更新。 下面是我的代码Android 从谷歌商店获取应用程序版本和最新信息,android,android-asynctask,google-play,Android,Android Asynctask,Google Play,我当前的代码可以很好地从google商店获取当前版本, 但是,有没有办法在同一个响应中同时获得当前版本和新内容? 如果应用程序在play store上更新,并且用户仍然使用旧版本,我想建议用户进行更新。 下面是我的代码 public class AppVersion extends AsyncTask<String, Void, String> { private final String packageName; private final Listener li
public class AppVersion extends AsyncTask<String, Void, String> {
private final String packageName;
private final Listener listener;
public interface Listener {
void result(String version);
}
AppVersion(String packageName, Listener listener) {
this.packageName = packageName;
this.listener = listener;
}
@Override
protected String doInBackground(String... params) {
return getPlayStoreAppVersion(String.format("https://play.google.com/store/apps/details?id=%s", packageName));
}
@Override
protected void onPostExecute(String version) {
listener.result(version);
}
@Nullable
private static String getPlayStoreAppVersion(String appUrlString) {
String
currentVersion_PatternSeq = "<div[^>]*?>Current\\sVersion</div><span[^>]*?>(.*?)><div[^>]*?>(.*?)><span[^>]*?>(.*?)</span>",
appVersion_PatternSeq = "htlgb\">([^<]*)</s";
try {
URLConnection connection = new URL(appUrlString).openConnection();
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
try (BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
StringBuilder sourceCode = new StringBuilder();
String line;
while ((line = br.readLine()) != null) sourceCode.append(line);
// Get the current version pattern sequence
String versionString = getAppVersion(currentVersion_PatternSeq, sourceCode.toString());
if (versionString == null) return null;
// get version from "htlgb">X.X.X</span>
return getAppVersion(appVersion_PatternSeq, versionString);
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Nullable
private static String getAppVersion(String patternString, String input) {
try {
Pattern pattern = Pattern.compile(patternString);
if (pattern == null) return null;
Matcher matcher = pattern.matcher(input);
if (matcher.find()) return matcher.group(1);
} catch (PatternSyntaxException e) {
e.printStackTrace();
}
return null;
}
}
您可以从BuildConfig类获取应用程序版本:
BuildConfig.VERSION_CODE.toString()
还有一件事我想澄清,你无法在playstore上获取已发布应用的应用版本
您可以将版本代码放在后端服务器上,然后通过api调用将此代码与当前应用程序版本进行检查
我认为这会对你有所帮助。在我看来,这对你的应用程序来说是个糟糕的设计。您不应该依靠“刮板播放”商店向用户显示升级提示。如果Play Store决定更改其HTML的设计,该怎么办?你可能会让你所有的用户都处于一个错误的状态
一个更好的解决方案是使用类似的方法。让你的应用程序从中读取允许的最低版本代码。然后它完全由您控制,您甚至不必编写服务器-firebase为您完成这项工作。是的,您可以使用我上面链接的方法,正如我所说,它工作正常,然后我将它与BuildConfig.VERSION\u代码进行比较,如果它>当前安装的版本,我会向他显示更新对话框,但我的问题是如何获得与版本相同的更新注释
BuildConfig.VERSION_CODE.toString()