检查Windows 8中的位置权限更改

时间:2012-11-16 12:51:34

标签: c# windows-8 microsoft-metro

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

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

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

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

由于 克里斯

2 个答案:

答案 0 :(得分:0)

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

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

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

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

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

希望有所帮助。

答案 1 :(得分:0)

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