gpt4 book ai didi

android - 地理围栏不可用以及如何处理

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:38:27 27 4
gpt4 key购买 nike

我在 Android 上使用地理围栏,它在大多数手机上都运行良好,但在其中一些上,它只是不起作用(在我的错误日志中显示“地理围栏不可用”)。

有些用户没有为 Google Play 服务启用位置跟踪。我认为这就是地理围栏无法在他们的手机上运行的原因。 (对吗?)

现在我想要一种检测方法。 (通知用户并最终向他们展示如何修复它)我知道有一种方法可以知道 google play 服务是否可用(我已经这样做了),但这并没有说明定位服务是否启用。

我知道我可以在添加或删除地理围栏时检查它,它有一个错误代码(地理围栏不可用 Location Status Codes ),但这还不够。一些用户在添加地理围栏后禁用定位服务。然后我无法知道这一点,我的应用程序将无法运行。 (提示用户等)。至少我必须在用户打开应用程序以检查问题所在时通知他们。

有人知道如何做到这一点吗?我现在能做的最好的事情是在应用程序启动时添加和删除虚拟地理围栏,但必须有更好的方法吗?

编辑:我用有问题的设备对其进行了测试,删除应用程序并重新安装似乎可以解决问题。我在第一次启动时没有做任何特别的事情,所以这真的很奇怪。看起来 google play 服务连接有问题,重新安装应用程序会对这些服务产生一些特殊影响。这可能吗?它在连接到它们时没有出错,但当我尝试设置地理围栏时却出错了(见上文)。

最佳答案

如果 GPS 提供商或网络提供商因任何原因被禁用,地理围栏将被禁用(和取消注册)。这将导致您的 onAddGeofencesResult() 被调用,状态代码为错误 (1000)。您可以在那里检测到它。

或者,您可以通过实现一个响应 android.location.PROVIDERS_CHANGED 的 Receiver 来检测这一点。记得将接收器添加到 AndroidManifest

<receiver android:name=".service.GeofenceProvidersChangedBroadcastReceiver">
<intent-filter>
<action android:name="android.location.PROVIDERS_CHANGED"/>
</intent-filter>
</receiver>

在接收器实现上,在其 onReceive() 上,获取位置管理器并测试提供者状态:

public class ProvidersChangedBroadcastReceiver extends WakefulBroadcastReceiver {

:
:

@Override
public void onReceive(Context context, Intent intent) {

LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
// GPS_PROVIDER IS enabled...
} else {
// GPS_PROVIDER is NOT enabled...
}

if (locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
// NETWORK_PROVIDER IS enabled...
} else {
// NETWORK_PROVIDER is NOT enabled...
}

:
:
:

if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) &&
locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
// We are good for geofencing as both GPS and Network providers are enabled....
}

:
:
:

}

关于android - 地理围栏不可用以及如何处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21403634/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com