如何在UWP环境中获取当前的AppInfo

时间:2017-06-01 05:52:49

标签: c# uwp

如何获取正在运行的UWP应用程序的当前AppInfo?我找不到任何可访问的构造函数或静态函数来获取此信息。

2 个答案:

答案 0 :(得分:1)

您可以通过以下代码获得App​Diagnostic​Info所有运行的uwp应用。

var list = await App​Diagnostic​Info.RequestInfoAsync();

然后你可以从App Diagnostic Info列表中的每个项目获得AppInfo

foreach (var diagnosticinfo in list)
{
    info = diagnosticinfo.AppInfo;
}
var id = info.Id;

请注意,您需要在Package.appxmainfest中声明以下功能。

<Package
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" 
IgnorableNamespaces="uap mp rescap">
  <Capabilities>
    <rescap:Capability Name="appDiagnostics" />
  </Capabilities>
</Package>

答案 1 :(得分:1)

确保您的设备已更新为Windows10 Creators更新版本 首先,您应该将功能 appDiagnostics 添加到Package.appxmanifest。直接修改文件的代码。

<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"     xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" IgnorableNamespaces="uap mp rescap">
  <Capabilities>
    <Capability Name="internetClient" />
    <rescap:Capability Name="appDiagnostics"/>
  </Capabilities>
</Package>

然后在主代码中,通过匹配PackageFamilyName来获取当前包。

var list = await AppDiagnosticInfo.RequestInfoAsync();
var currentPackage = list.Where(o => o.AppInfo.PackageFamilyName == Package.Current.Id.FamilyName).FirstOrDefault();
if (currentPackage != null)
{
    AppInfo currentAppInfo = currentPackage.AppInfo;
}