在Universal Application中为Windows Phone添加Url Mapper

时间:2014-06-01 10:45:34

标签: c# windows-phone-8.1 win-universal-app

我正在努力从现有的Windows Phone 8.1应用程序中创建通用应用程序。我按照here描述使用了AssociationUriMapper,但我无法在通用应用中找到使用它的方法。 System.Windows.Navigation命名空间不存在,因此我无法覆盖UriMapperBase

任何人都知道这出现了什么问题以及我必须做些什么来保持功能,即使在通用应用程序中(没有为Windows 8.1应用程序提供相同的功能)?

1 个答案:

答案 0 :(得分:11)

自Windows Phone 8以来,应用程序如何处理启动时Uris的变化已经发生了很大变化。以前,该应用程序将通过一个需要大量解析才能使用的Uri - 因此需要一个微软提供的UriMapper。

对于Windows Phone 8.1和Windows 8.1(即通用XAML应用程序),处理应用程序激活(通过OpenFilePicker,ShareTarget,Protocol等)由OnActivated方法处理......

protected override void OnActivated(IActivatedEventArgs args)
{
    if (args.Kind == ActivationKind.Protocol)
    {
        ProtocolActivatedEventArgs eventArgs = args as ProtocolActivatedEventArgs;

    // TODO: Handle URI activation
    // The received URI is eventArgs.Uri.AbsoluteUri
    }
}

来源:official MSDN documentation

在确定ActivationKind并转换为正确的EventArgs类型之后,只需要解析数据的参数。

还有example Universal app on that page详细说明了其中一些情况。