在 HoloLens 2 上的 Unity 应用程序中打开文件浏览器

Open File Browser in Unity App On HoloLens 2

所以看起来这将是一个简单的解决方案,但由于我找不到任何关于如何做到这一点的文档,它实际上与暴力猜测密码相同。

环境

我正在努力实现的目标

问题

Background/Context

使用 MRTK 2/HoloLens 2,您可以在不退出 Unity 应用程序的情况下启动外部应用程序。 HoloLens 1 做不到的事情。 Microsoft 在他们的 Unity 示例包中提供了证明:Assets/MixedRealityToolkit.Examples/Demos/HandTracking/Scenes/HandInteraction.Examples.unity 一旦您将 .Foundation 和 .Examples 外部包加载到您的 Unity 项目中。

在提供的场景中,在所有呈现的对象中,右侧有两个按钮,按下时将启动 Edge 浏览器或 OS 的设置应用程序。这是通过启动 URI 附加脚本完成的,该脚本在用户通过 GameObject 的检查器提供的字符串上运行 .OpenURL

以及运行用户输入字符串的代码片段(微软在 MRTK2 中提供):

public void Launch(string uri){
    ...
    Application.OpenURL(uri);
    ...
}


到目前为止我尝试了什么

由于 Windows 桌面上的 10 和 Windows 全息操作系统非常相似,当在 Unity 处于播放模式时按下这些按钮时,按钮完全起作用,启动计算机的默认设置浏览器,以及 Windows 10.
的设置应用程序 在这种假设下,我查找了如何打开文件 browser/explorer 并能够使用文本框中的字符串 explorer 成功启动它,但是 only Windows 10个桌面。它在 HoloLens 2 上 运行 时不起作用。不出所料,Windows 10 和 Windows 全息操作系统之间存在差异,因此测试这有点乏味,因为我每次都需要构建需要测试。到目前为止,我测试过的字符串是:
explorer explorer.exe ms-explorer ms-browser ms-storage ms-storage.storagefile:// (and without the ://) https://C:\
等等....

认为 Application.OpenURL 可能不是 only/best 路线我也尝试了不同的脚本:

public void Opener(){
    System.Diagnostics.Process.Start("explorer.exe");
}

但再一次,这种方法在 Windows 10 桌面上完美运行,但在 HoloLens 2 上却不行。我可以继续使用更多示例和解释,但我已经担心我必须重新定义此 post 作为维基百科文章,其长度已经达到。

仅此而已。我对从这里去哪里感到难过。因此,当我继续随机进入 Googleverse 并查看我可以找到哪些半相关片段来测试和证明它们在桌面而不是 HoloLens 2 上工作时,thoughts/suggestions?我不相信这是一个复杂的problem/solution。但这是一个非常具体的问题,据我所知,由于 HoloLens 2 仍然是新的和稀缺的,所以它的文档为零。

(另外我无法为 HoloLens 2 创建新标签,人品不够好。所以现在我必须使用常规的 hololens 标签)

我一直在与 Microsoft 的开发人员支持人员来回交流,他们在揭示有关此主题的更多信息方面非常有帮助,我们一致认为记录这些信息是个好主意在这里,以防将来有人遇到这个 need/issue。



目前无法从 HoloLens 2 上的 Unity 应用程序中访问本机文件浏览器。在使用第 3 方解决方案之前,最好的本机操作过程是使用 FileOpenPicker:
https://docs.microsoft.com/en-us/windows/mixed-reality/app-model#file-pickers

除了完全原生的解决方案之外,下一个最佳做法是使用资产商店中的第 3 方资产。由于我的开发人员 environment/work 限制,我不确定我个人是否能够使用此方法,但对于大多数其他人来说,这是一个可行的行动方案。

我认为这是针对 HoloLens 2 当前状态的官方答案,但如果未来情况发生变化,我很乐意对此进行修改。



tl;dr 版本:

目前(2020 年初)文件资源管理器本身无法通过应用程序访问,best/closest 本机解决方案是使用 FileOpenPicker,或第三个Unity Asset Store 上的派对资产。