在 Metro 应用程序中的权限更改时收到通知
Posted
技术标签:
【中文标题】在 Metro 应用程序中的权限更改时收到通知【英文标题】:get notification when permissions change in metro app 【发布时间】:2012-08-14 13:16:35 【问题描述】:我正在使用 c# 开发 Win 8 Metro App。
在我的应用程序中,我使用地理定位服务来获取用户位置的当前坐标。第一次启动应用程序时,系统会要求您提供权限。 这一切都很好,我可以毫无问题地获得坐标。
现在我想在权限更改后立即给用户一条消息。 如何做到这一点?
【问题讨论】:
【参考方案1】:查看此文档: http://msdn.microsoft.com/en-us/library/windows/apps/Hh465148
为重新启用定位服务提供 UI
让您的应用提供用于重新启用位置服务的 UI,例如,重新实例化 Geolocator 对象并尝试再次获取位置信息的刷新按钮。
如果用户在禁用位置访问后重新启用,则应用不会收到任何通知。 status 属性没有改变,也没有 statusChanged 事件。您的应用应创建一个新的 Geolocator 对象并调用 getGeopositionAsync 以尝试获取更新的位置数据,或再次订阅 positionChanged 事件。如果状态随后表明位置已重新启用,请清除您的应用先前通知用户位置服务已禁用的任何 UI,并对新状态做出适当响应。
您的应用还应在激活时再次尝试获取位置数据,或者当用户明确尝试使用需要位置信息的功能时,或在任何其他适合场景的时间。
【讨论】:
【参考方案2】:StatusChanged 事件可用于此。
http://msdn.microsoft.com/en-us/library/windows/apps/windows.devices.geolocation.statuschangedeventargs.status.aspx
case Windows.Devices.Geolocation.PositionStatus.disabled:
// The app doesn't have permission to access location,
// either because location has been turned off.
return "Your location is currently turned off. " +
"Change your settings through the Settings charm " +
" to turn it back on.";
break;
【讨论】:
嗯,这几乎可以工作,但 StatusChanged 事件仅在我关闭权限时调用,而不是在我之后打开权限时调用...以上是关于在 Metro 应用程序中的权限更改时收到通知的主要内容,如果未能解决你的问题,请参考以下文章