在 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 应用程序中的权限更改时收到通知的主要内容,如果未能解决你的问题,请参考以下文章

存储来自 Metro Style 应用程序的通知

收到推送通知时如何更改范围变量

Windows 8 Metro 应用程序键盘位置更改

如何在前台(顶部)活动(应用程序)更改时收到通知

有啥方法可以在运行时更改 ios 上推送通知的权限?

iOS iCloud 文档更改通知