我的文件位于'C:/Users/Username/Desktop/sample.pdf'。我可以手动打开它,它加载很好。现在,如果我放置一个无效的链接,例如file:///sample.pdf,这显然无法找到,Hololens应用程序将打开尝试打开pdf的Edge浏览器。所以,很明显代码正在运行。
那么为什么在运行时加载Hololens时这个uri是不正确的呢?
string uriToLaunch = "file:///C:/Users/Username/Desktop/sample.pdf";
// Create a Uri object from a URI string
var uri = new Uri(uriToLaunch);
Task task = new Task(
async () =>
{
// Launch the URI
var success = await Windows.System.Launcher.LaunchUriAsync(uri);
if (success)
{
// URI launched
}
else
{
// URI launch failed
}
});
task.Start();
task.Wait();
这是抛出的异常。
抛出异常:Assembly-CSharp.dll中的'System.ArgumentException'
WinRT信息: 提供的URI方案无法启动。 未处理的'Platform.InvalidArgumentException'异常被捕获! - '参数不正确。'
参数不正确。 提供的URI方案无法启动。',Sender:'null'。缺少try / catch块。
Hololens中有这些例外的棘手问题有时它们似乎与最近没有工作有关。我试过谷歌搜索错误,没有任何帮助。
编辑: string uriToLaunch = @"file:///Data/myFiles/sample.pdf";
返回WinRT信息:无法启动提供的URI方案。
参数不正确。
string uriToLaunch = @"/Data/myFiles/sample.pdf";
返回UriFormatException:无效的URI:无法确定URI的格式。
注意我以为我可以从应用中打开Edge浏览器,但我无法复制此功能。我们应该说,唯一能积极响应的是
@"ms-appx:///Data/myFiles/sample.pdf";
这将打开一个单独的对话框,将我带到MS商店尝试购买将打开ms-appx文件的应用程序。
编辑2:
FileOpenPicker openPicker = new FileOpenPicker();
openPicker.ViewMode = PickerViewMode.Thumbnail;
openPicker.ViewMode = PickerViewMode.Thumbnail;
openPicker.FileTypeFilter.Add(".jpg");
openPicker.FileTypeFilter.Add(".jpeg");
openPicker.FileTypeFilter.Add(".png");
Task task = new Task(
async () =>
{
StorageFile file = await openPicker.PickSingleFileAsync();
if (file != null)
{
// Application now has read/write access to the picked file
Debug.Log("Picked photo: " + file.Name);
}
else
{
Debug.Log("Cancelled");
}
});
task.Start();
task.Wait();
我已经尝试过实现这个简单的FileOpenPicker,只是为了测试并看看我是否可以使用一个,但没有成功。
它抛出了这个:
抛出异常:mscorlib.ni.dll中的“System.Exception”
未处理的'Platform.COMException'异常被捕获! - '窗口句柄无效。
编辑3:这是我在错误上找到的全部内容。
收到COMException 如果异常的ErrorCode属性值为0x80070578(ERROR_INVALID_WINDOW_HANDLE),则表示未在UI线程上调用该方法。
编辑4:现在崩溃并返回:
抛出异常:mscorlib.ni.dll中的“System.Exception”
程序'[4084] hololensapplication.exe'已退出,代码为-1073741189(0xc000027b)。
答案 0 :(得分:0)
正如@AVK指出的那样,UWP应用程序是沙盒式的。这意味着无法访问Hololens本地环境之外的文件。 HoloLens上有本地已知文件夹,但解决此问题的唯一方法是使用第一方应用程序,如OneDrive,Azure等。