HoloLens应用调用StartSuspendAsync无响应 跳转浏览器后应用重置怎么办
问题根因与解决方案
1. 现有方案的错误点
- 手动修改生成后的
.appxmanifest文件无效:Unity/VS每次重新构建/部署时都会覆盖生成目录下的清单文件,手动修改的内容不会保留。 StartSuspendAsync不是最小化API:该接口是强制挂起应用资源,和手动最小化的后台驻留逻辑完全不同,自然不会达到预期效果。Process.Start和Application.OpenURL在HoloLens UWP环境下存在兼容问题:前者受UWP沙箱权限限制无法直接调用,后者旧版本Unity实现存在缺陷,调用后会触发应用进程销毁。
2. 正确实现方案
无需手动实现最小化逻辑,UWP官方提供的Launcher.LaunchUriAsync接口本身就会自动将当前应用切换到后台驻留,调用系统默认浏览器打开链接,返回时应用不会被重置,操作步骤如下:
步骤1:编写调用代码
#if !UNITY_EDITOR && UNITY_WSA_10_0 using Windows.System; using System; #endif public void OpenBrowserUrl(string targetUrl) { #if !UNITY_EDITOR && UNITY_WSA_10_0 // UWP原生接口打开链接,自动将当前应用切后台 _ = Launcher.LaunchUriAsync(new Uri(targetUrl)); #else // 编辑器环境下用Unity默认接口 UnityEngine.Application.OpenURL(targetUrl); #endif }
步骤2:配置项目权限
不需要额外声明appDiagnostics权限,只需要在Unity编辑器中进入:Edit > Project Settings > Player > Publishing Settings > Capabilities
确认没有勾选冲突的限制类权限即可,构建时Unity会自动生成正确的清单文件,无需手动修改生成后的文件。
步骤3:测试验证
重新构建UWP项目并部署到HoloLens,调用上述接口即可正常打开浏览器,返回应用时状态不会重置。
内容的提问来源于stack exchange,提问作者rhylvin2019
相关产品推荐
相关产品推荐

