unity3d 提供pdf文件路径时,Unity无法打开Hololens 2上的Edge浏览器

hs1ihplo  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(143)

我正在尝试使用MRTK在部署到Microsoft Hololens 2的Unity应用程序中打开PDF。我想使用集成的Edge浏览器,它能够在应用程序中加载并同时运行。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月15日f
  • Hololens 2最新更新
  • Win10软件开发工具包目标版本10.0.19041.0
  • 为全息镜头构建ARM64

编辑:我最终使用了

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

rxztt3cl1#

您可以尝试使用Launcher.LaunchFileAsync启动带有Edge的PDF文件。此方法需要StorageFile作为参数,可通过FileOpenPicker或GetFileFromPathAsync获取该参数。
请参考下面的代码。

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);
    }

相关问题