我在Windows 8 Metro App中使用GeoLocator。假设用户已允许位置访问,我获取他们的数据并将其保存到缓存。当用户重新加载App时,我不需要像在缓存中那样调用GeoLocator - 一切都很好。
但是,如果用户关闭了位置访问权限,我该如何检测到这一点并相应地更新缓存,以便应用程序知道再次调用GeoLocator?
据我所知,如果功能关闭,GeoLocator将会失败,但由于我的位置数据仍在缓存中,因此我不会调用GeoLocator来检测它。
我错过了一些明显的东西吗?有没有办法检测我错过的位置应用功能?
由于 克里斯
答案 0 :(得分:0)
我不确定我是否理解你的问题,但有一句话:
无论如何,如果你要做的是检查位置是否已启用,则可以使用GeoLocator中的StatusChanged事件。应用程序运行时位置设置的任何更改都将触发事件。
但如果卸载应用程序,则无意义,事件将不会被触发。
总而言之,如果你想知道在你的应用程序被卸载时是否禁用了位置,除了每次加载你的应用程序时调用Geolocator.GetGeoPositionAsync()并检查它是否失败,别无他法。
希望有所帮助。
答案 1 :(得分:0)
您可以将GetGeopositionAsync()调用放入try-catch中。如果您收到“拒绝访问”异常,只需显示一个消息框,表明该应用的位置权限已被禁用。