我正在努力从现有的Windows Phone 8.1应用程序中创建通用应用程序。我按照here描述使用了AssociationUriMapper,但我无法在通用应用中找到使用它的方法。 System.Windows.Navigation
命名空间不存在,因此我无法覆盖UriMapperBase
。
任何人都知道这出现了什么问题以及我必须做些什么来保持功能,即使在通用应用程序中(没有为Windows 8.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详细说明了其中一些情况。