如何获取正在运行的UWP应用程序的当前AppInfo?我找不到任何可访问的构造函数或静态函数来获取此信息。
答案 0 :(得分:1)
您可以通过以下代码获得AppDiagnosticInfo
所有运行的uwp应用。
var list = await AppDiagnosticInfo.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;
}