You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Google Play Store中应用的最新版本?技术求助

检测Google Play商店应用最新版本的可行方案

以下是几种绕过官方API限制的实用方案,帮你实现应用更新检测:

方法1:调用Google Play非公开内部接口(需谨慎使用)

Google Play存在一些未公开的内部接口可获取应用详情,虽无官方支持,但目前仍能正常工作。你可通过构造POST请求获取版本信息,示例代码(Android平台用OkHttp实现):

OkHttpClient client = new OkHttpClient();

// 替换{包名}为目标应用的包名,比如org.telegram.messenger
String requestBody = "f.req=[[\"qnKhOb\",\"[[\\\"{包名}\\\",7,\\\"en_US\\\"]]\",null,\"1\"]]";

Request request = new Request.Builder()
        .url("https://play.google.com/_/PlayStoreUi/data/batchexecute?rpcids=qnKhOb")
        .addHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8")
        .post(RequestBody.create(requestBody, MediaType.parse("application/x-www-form-urlencoded")))
        .build();

try (Response response = client.newCall(request).execute()) {
    if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
    
    String responseBody = response.body().string();
    // 用正则匹配提取版本号
    Pattern pattern = Pattern.compile("\"version\":\"(.*?)\"");
    Matcher matcher = pattern.matcher(responseBody);
    if (matcher.find()) {
        String latestVersion = matcher.group(1);
        // 获取本地已安装应用的版本号
        String installedVersion = getPackageManager().getPackageInfo("{包名}", 0).versionName;
        if (compareVersions(latestVersion, installedVersion) > 0) {
            // 触发更新提示逻辑
        }
    }
} catch (Exception e) {
    e.printStackTrace();
    // 接口失效时的降级处理
}

// 版本号对比工具方法
private int compareVersions(String version1, String version2) {
    String[] parts1 = version1.split("\\.");
    String[] parts2 = version2.split("\\.");
    int length = Math.max(parts1.length, parts2.length);
    for (int i = 0; i < length; i++) {
        int v1 = i < parts1.length ? Integer.parseInt(parts1[i]) : 0;
        int v2 = i < parts2.length ? Integer.parseInt(parts2[i]) : 0;
        if (v1 != v2) {
            return v1 - v2;
        }
    }
    return 0;
}

注意:该接口无官方保障,随时可能被Google修改,需做好异常捕获和降级处理。

方法2:自建版本追踪服务

若不想依赖非官方接口,可搭建简单后端服务:

  • 定期用爬虫(如Jsoup)爬取Google Play应用详情页的版本号,存入数据库
  • 提供HTTP接口供APP查询目标应用的最新版本号
  • APP请求接口获取版本号后,与本地版本对比

示例爬虫逻辑(Java用Jsoup):

Document doc = Jsoup.connect("https://play.google.com/store/apps/details?id={包名}&hl=en")
        .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36")
        .get();
Element versionElement = doc.selectFirst(".hAyfc .htlgb");
if (versionElement != null) {
    String latestVersion = versionElement.text();
    // 将版本号存储到数据库
}

此方案需自行维护后端,但稳定性更高,不受Google接口变更影响。

方法3:引导用户跳转Google Play详情页(官方推荐)

若无需自行判断版本,最稳妥的方式是直接打开目标应用的Play商店详情页,Google Play会自动检测并显示更新按钮:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("market://details?id={包名}"));
// 备用链接,设备未安装Play商店时跳转网页
intent.putExtra("alternate_url", "https://play.google.com/store/apps/details?id={包名}");
startActivity(intent);

该方法完全依赖Google Play官方逻辑,无版本号获取问题,也不会违反Play商店政策。

内容的提问来源于stack exchange,提问作者Mansi Tanna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 14:43:35