You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

为何两种Google Play Services版本获取方式结果不同?哪个为正确值?

两种Google Play Services版本获取方法的差异解析

这是个很常见的疑惑,咱们来拆解清楚这两个方法的本质差异,以及哪个才是你需要的正确值:

核心结论

  • 方法A获取的是设备上当前已安装的Google Play Services的真实版本,和你在系统设置里看到的版本完全对应,这是能反映设备实际状态的正确值。
  • 方法B获取的是你的项目依赖的Google Play Services SDK的版本,它是固定值,和设备上实际运行的服务版本无关。

为什么结果会不同?

方法A的底层逻辑

getPackageManager().getPackageInfo(GoogleApiAvailability.GOOGLE_PLAY_SERVICES_PACKAGE, 0).versionCode 是通过Android系统的包管理器,直接查询设备上已安装的Google Play Services应用的版本信息。这个值会随着设备上的Google Play Services自动更新而变化,完全对应设备的真实状态。

比如你测试得到的12673023,正好对应设置里显示的12.6.73——这是Google对版本号的编码规则:将主版本、次版本、补丁号等信息转换成整数格式,所以两者本质是同一个版本的不同表现形式。

方法B的底层逻辑

GoogleApiAvailability.GOOGLE_PLAY_SERVICES_VERSION_CODE 是一个静态常量,它定义在你项目引入的Google Play Services SDK依赖包中。比如你的项目依赖的是11.7.17版本的SDK,那么这个常量值就是11717000,不管设备上安装的服务是最新版还是旧版本,这个值都不会改变。

该如何选择?

  • 如果你需要判断设备上的Google Play Services是否满足你的应用功能需求(比如某些API需要特定最低版本支持),一定要用方法A,它能给出设备的真实版本情况。
  • 方法B仅适合确认你当前项目依赖的SDK版本,或者在不需要关注设备实际状态的场景下使用,它不能代表设备上的真实服务版本。

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

火山引擎 最新活动