【问题标题】:Detect that user is returned from location settings in winrt windows phone 8.1 application检测用户是从 winrt windows phone 8.1 应用程序中的位置设置返回的
【发布时间】:2015-08-12 08:01:49
【问题描述】:

我正在我的应用程序中打开位置设置,如下所示:

await Launcher.LaunchUriAsync(new Uri("ms-settings-location:"));

但是当位置设置打开并且用户打开位置并返回时,不会触发任何事件。我如何知道用户已从设置中返回,以便我可以检查用户是否有打开的位置设置... onnavigatedto 和 onnavigatedfrom 事件在分别返回和离开我的应用程序页面时不会被触发。

【问题讨论】:

    标签: c# windows-runtime geolocation windows-phone-8.1 bing-maps


    【解决方案1】:

    假设您实现了以下代码:

    Window.Current.VisibilityChanged += Current_VisibilityChanged;
    Window.Current.SizeChanged += Current_SizeChanged;
    Window.Current.Activated += Current_Activated;
    Window.Current.Closed += Current_Closed;
    App.Current.Resuming += Current_Resuming;
    App.Current.Suspending += Current_Suspending;
    

    操作面板

    如果操作面板打开,则不会引发上述任何事件,是的,什么都不会!

    设置

    如果用户点击ALL SETTINGS,它将导航到设置页面并引发一些事件:

    • Current_VisibilityChanged
    • Current_Closed
    • Current_Suspending

    返回应用程序

    • Current_Resuming
    • Current_VisibilityChanged
    • Current_Activated

    地理定位器(解决方案)

    Geolocator 类中有一个StatusChanged 事件,您应该订阅它。

    如果用户打开了Location,那么您应该等待StatusChangedEventArgs.Status 变为Ready,然后再继续尝试获取该位置,如果变为Disabled,则停止。

    订阅此事件会更好,因为它可以让您确切地知道发生了什么。

    【讨论】:

    • GeoLocator 解决方案对我来说似乎是最好的,我现在已经应用了一个奇怪的解决方案,我会尝试这个,如果它解决了我的问题,然后将它标记为答案
    【解决方案2】:

    肯定会触发一些事件,你可以使用:

    • Suspending/Resuming 事件。用户导航到设置后,您的应用将很快暂停。请注意,因此在调试 PLM 时禁用并且 Suspending/Resuming 事件 won't be raised - 您必须使用 Lifecycle events 选项卡进行测试,
    • 订阅Windows.VisibilityChanged 事件 - 您必须小心处理此事件,因为在更多情况下会触发 Suspending 事件,
    • 订阅Windows.Activated 事件 - 就像上面一样,它被触发的次数甚至比VisivilityChanged还要多。

    可能最好的选择是 Suspending 事件。有了这个,您还可以处理应用程序被操作系统终止的情况。

    【讨论】:

      猜你喜欢
      • 2016-03-07
      • 1970-01-01
      • 1970-01-01
      • 2016-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      相关资源
      最近更新 更多