【问题标题】:Unity does not open the Edge Browser on a Hololens 2 when providing a pdf file path提供 pdf 文件路径时,Unity 不会在 Hololens 2 上打开 Edge 浏览器
【发布时间】:2022-02-24 21:49:18
【问题描述】:

我正在尝试使用 MRTK 在部署到 Microsoft Hololens 2 的 Unity 应用中打开 PDF。 我想使用集成的边缘浏览器,它能够在应用程序中加载并同时运行。 Edge 本身也能够加载 pdf 文件。 我预计使用 LaunchUri 会从提供的位置打开文件

    public void Launch()
    {
        var absolutePath = Path.Combine(_myDocuments, _subfolder);
        absolutePath = Path.Combine(absolutePath, _fileName);            
#if UNITY_WSA
        UnityEngine.WSA.Launcher.LaunchUri(absolutePath, true);
#else
        Application.OpenURL(absolutePath);
#endif
    }

使用网站作为字符串启动 Edge 浏览器,可以。在浏览器窗口中手动输入文件路径以加载 pdf 也可以,但是通过直接提供我的文件的完整路径来启动浏览器,不会打开任何浏览器窗口。 我怀疑它不起作用,因为 Edge 没有设置为 PDF 文件的默认应用程序,但是当使用 Edge 中的按钮使其成为默认应用程序时,它只是告诉我它失败并且我找不到任何其他方式来实现这一目标。 有没有人知道我如何能够从 Unity 应用程序中加载 Edge 并提供我的 pdf 文件的路径,以便在按下按钮时自动加载?

PDF 存储在“文档”下的本地文件系统中。 如前所述,该文件是可访问的,并且可以由 Edge 打开。使用系统文件浏览器从系统中手动打开 PDF 会自动使用 Edge 并按预期打开文件,这是我想从 Unity 中复制的行为。

环境

  • 团结 2020.3.15f
  • Hololens 2 最新更新
  • Win10 SDK 目标 10.0.19041.0
  • 为 Hololens 构建到 ARM64

编辑: 我最终使用了

UnityEngine.WSA.Launcher.LaunchFile(folderType, relativePath, false);

【问题讨论】:

  • 如果没有代码 sn-ps,我们很难缩小问题的范围,能否请您提供示例代码并告诉我们您放置 pdf 文件的路径?这个 HoloLens OS 版本和 Unity 版本也很重要,你能分享一下吗?
  • 当然。我将您要求的信息添加到问题中。
  • 尝试将路径分隔符从“/”更改为“\\”,反之亦然。

标签: unity3d hololens windows-mixed-reality


【解决方案1】:

您可以尝试Launcher.LaunchFileAsync 使用 Edge 启动 PDF 文件。该方法需要StorageFile作为参数,可以通过FileOpenPickerGetFileFromPathAsync获取。

请参考以下代码。

    private async void PickAndLaunchFile()
    {
        // First, get a file via the picker.
        var openPicker = new Windows.Storage.Pickers.FileOpenPicker();
        openPicker.FileTypeFilter.Add("*");
        Windows.Storage.StorageFile file = await openPicker.PickSingleFileAsync();
        if (file != null)
        {
            // Next, launch the file.
            bool success = await Launcher.LaunchFileAsync(file);
    }

【讨论】:

  • 如果我没记错的话,Windows 命名空间不适用于 UWP Unity 构建。此外,LaunchFileAsync 还使用默认应用程序,如前所述,在我的情况下,无法为 Hololens2 上的 PDF 文件设置该应用程序。
  • 可以直接在Unity脚本中使用WinRT API,请看:WinRT APIs with Unity for HoloLens。我在 UWP HoloLens 应用程序上测试了这个 API,它可以使用 Edge 启动 PDF 文件,即使没有将其设置为默认应用程序。此外,AFAIK,只有来自您应用程序包的文件可以称为 URI:ms-appx and ms-appx-web
  • 感谢您的提示,它现在可以工作了,尽管我最终使用了:UnityEngine.WSA.Launcher.LaunchFile(folderType, relativePath, false);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多