0

我在我的 Windows 8 Metro 应用程序中使用 GeoLocator。假设用户已允许位置访问,我会获取他们的数据并将其保存到缓存中。当用户重新加载应用程序时,我不需要调用 GeoLocator,因为它在缓存中 - 一切都很好。

但是,如果用户关闭位置访问,我如何检测到这一点并相应地更新缓存,以便应用知道再次调用 GeoLocator?

我知道如果关闭该功能,GeoLocator 将会失败,但由于我的位置数据仍在缓存中,因此我不会调用 GeoLocator 来检测这一点。

我错过了一些明显的东西吗?有没有办法检测我错过的位置应用功能?

谢谢克里斯

4

2 回答 2

0

您可以将 GetGeopositionAsync() 调用放入 try - catch。如果您收到“拒绝访问”异常,只需显示一个消息框,说明应用程序的位置权限已被禁用。

于 2014-11-13T19:17:44.767 回答
0

我不确定我是否正确理解了您的问题,但有一句话:

  • 缓存位置不是最好的主意。您无法保证在重新加载应用程序时,用户与应用程序暂停时处于相同的地理位置。在这种情况下,您应该在每次应用加载/恢复时调用 GeoLocator。

无论如何,如果您要检查位置是否已启用,则可以使用 GeoLocator 中的StatusChanged事件。应用程序运行时位置设置的任何更改都将触发该事件。

但是如果应用程序被卸载则没有意义,事件不会被触发。

所以总而言之,如果你想知道在你的应用程序卸载时位置是否被禁用,除了每次加载应用程序时调用Geolocator.GetGeoPositionAsync()并检查它是否失败之外别无他法。

希望有帮助。

于 2012-11-16T13:14:51.087 回答