是否可以在运行时获取UWP应用程序协议名称?怎么样?

问题描述:

我正在研究可以使用协议激活或启动的应用程序。该协议通常在声明选项卡下的appxmanifest文件中设置。我想要做的是在运行时获取在appxmanifest中声明的协议名称。这可能吗?如果是这样,我怎么能得到这个价值?是否可以在运行时获取UWP应用程序协议名称?怎么样?

我需要获取应用程序自己的协议,以便我可以告诉其他应用程序这是要回到我的协议。

+0

你是你的应用程序的开发者。你怎么可能不知道你使用的协议?只需在您的应用或您的网站上显示协议,以告诉其他应用如何使用它们! – Scavenger

+0

如果你的意思是获得其他应用程序协议,那么也没有这样的API。因为只有协议名称是无用的。要使用协议,我们不仅需要协议名称,还需要可以在此协议中使用的参数,如[Windows地图应用](https://docs.microsoft.com/zh-cn/windows/uwp /启动,恢复/发射,地图,应用程序)。为了让其他应用成功使用您的协议,您始终需要提供一份文档来清楚地介绍您的协议。 – Scavenger

+0

我不是说要得到其他应用程序的协议。我明白,如果我想要,我可以硬编码自己的协议。但是我正在开发一个库,可以被其他应用程序使用,然后通过协议进行通信。我想查询应用程序协议,以便我可以将其发送到其他应用程序,以便其他应用程序可以回复。我知道应用程序开发人员可以告诉我的图书馆协议,但如果我查询它会更容易。 – Lance

这只是一个想法 - 我还没有验证,但它可能工作。您可以从您的应用程序访问你的应用程序的AppxManifest.Xml类似如下:

var uri = new System.Uri("ms-appx:///AppxManifest.xml"); 
StorageFile file = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(uri); 
using (var ras = await file.OpenReadAsync()) 
{ 
    // 
} 

然后,您可以读取.xml文件,并解析UAP:协议元素。以下代码是使用xdocument访问.xml和解析的好例子。

FeedbackOverlay.xaml.cs