调用需要 API 级别 24(当前最低为 8):新的 android.location.GnssStatus.Callback

Posted

技术标签:

【中文标题】调用需要 API 级别 24(当前最低为 8):新的 android.location.GnssStatus.Callback【英文标题】:Call requires API level 24 (current min is 8): new android.location.GnssStatus.Callback 【发布时间】:2016-12-20 03:23:51 【问题描述】:

registerGnssStatusCallback 是在 API 24 中引入的。现在 GpsStatus 已被弃用,但我们不能将新的 GpsStatus 用于 24 之前的 API。

现在呢?我们如何在旧项目中使用新的?

【问题讨论】:

【参考方案1】:

我建议暂时使用旧电话。这仅在 API 24 中被弃用,甚至还没有正式发布。即使它一旦发布,在不久的将来也可能只会被极少数的设备使用(即大多数人在很长一段时间内仍然是旧版本的 android)。此外,从最小版本 8 到最小版本 24 是一个很大的飞跃。

话虽如此,可以进行特定于版本的推理。请参阅以下文档:https://developer.android.com/reference/android/os/Build.VERSION.htmlhttps://developer.android.com/reference/android/os/Build.VERSION_CODES.html

这可能很明显,但需要注意的是,您不想编写如下代码:

if (version == x) 
  ...

else if (version == y) 
    ....

else if (version == z) 
   ...

我只是指出这一点,因为我确实看到人们这样做。 (在这种情况下,如果可能的话,最好使用某种策略/模板模式和工厂)。

【讨论】:

你的意思是它没有发布?我的 sdk 中已经有了它,当我将项目的构建目标更改为 api 24 时,它会显示此错误,如果我使用旧的 GpsStatus,它会警告我弃用。为了向后兼容,应该有一些支持库版本。 有可用的预览,但仅此而已 - 预览。 Android 7 尚未正式向公众发布。见en.wikipedia.org/wiki/Android_version_history。此外,旧版本的 仍然在库中得到支持;他们现在实际上并没有删除它,它只是被弃用了。

以上是关于调用需要 API 级别 24(当前最低为 8):新的 android.location.GnssStatus.Callback的主要内容,如果未能解决你的问题,请参考以下文章

android:Theme.Material.Light 需要 API 级别 21(当前最低为 8)

如何修复 Android 中的“调用需要 API 级别 26(当前最低为 25)”错误

调用需要 API 级别 23(当前最低为 14):android.app.Activity#requestPermissions,checkSelfPermission [重复]

调用需要 API 级别 26(当前最低为 23):java.time.Instant#now

调用需要 API 级别 21(当前最低为 17):android.hardware.camera2.CameraDevice.StateCallback

无法使用 HashMap 替换方法:调用需要 api 级别 24(当前最小值为 22):java.util.HashMap#replace