首页 > 解决方案 > 如何将文件保存到 Hololens 上的 Documents 文件夹?

问题描述

我想在 Hololens 上保存一些持久的 JSON 文件。他们需要在应用程序的构建中持续存在,因此Application.persistentDataPath不起作用。我选择 Documents 是因为它最有意义。Hololens 上没有下载文件夹。

这是我到目前为止所尝试的:

我已阅读App Capability Documentation并手动将其添加<uap:Capability Name="documentsLibrary"/>Package.appxmanifest文件中。

我还添加了xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"命名空间。但我收到以下警告:

The element 'Capabilities' in namespace 'http://schemas.microsoft.com/appx/manifest/foundation/windows10' has invalid child element 'Capability' in namespace 'http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities'. List of possible elements expected: 'DeviceCapability' in namespace 'http://schemas.microsoft.com/appx/manifest/foundation/windows10'. Ad-Hoc Localz D:\Repositories\ad-hoc-localization\_build\Ad-Hoc Localz\Package.appxmanifest 37 

以及构建时出现以下错误:

Error APPX0501 Validation error. error C00CE014: App manifest validation error: The app manifest must be valid as per schema: Line 45, Column 6, Reason: Element '{http://schemas.microsoft.com/appx/manifest/uap/windows10}Capability' is unexpected according to content model of parent element '{http://schemas.microsoft.com/appx/manifest/foundation/windows10}Capabilities'. Expecting: {http://schemas.microsoft.com/appx/manifest/foundation/windows10}DeviceCapability. Ad-Hoc Localz D:\Repositories\ad-hoc-localization_build\build\bin\Win32\Master\AppxManifest.xml 1 

它还说我需要指定我使用此文档手动将其添加到清单的文件类型。但是我得到了同样的警告,即无效的子元素。我没有看到基于 GUI 的方式在这个论坛的这张图片中添加

那么如何构建一个可以访问 Hololens 上 Documents 文件夹的应用程序呢?

在我Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)用来获取文档路径的代码中,但在代码片段中它们显示它应该是KnownFolders.DocumentsLibrary. UWP 上的命名空间无效吗Environment

链接到整个清单。

标签: c#visual-studiounity3duwphololens

解决方案


  1. 不要使用

xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" 因为 DocumentLibrary 功能位于 uap 命名空间中。添加如下文档功能

<Capabilities>  
    <Capability Name="internetClientServer"/>
   <Capability Name="internetClient"/>
   <uap:Capability Name="documentsLibrary"/>
  <DeviceCapability Name="microphone"/>  
</Capabilities>

现在你不应该得到警告。

  1. 使用以下代码行在 Document 文件夹中创建和获取文件

     IReadOnlyList<Windows.Storage.StorageFile> 
     file=awaitKnownFolders.DocumentsLibrary.CreateFileAsync("FileName");
    
     IReadOnlyList<Windows.Storage.StorageFile> 
     file=awaitKnownFolders.DocumentsLibrary.GetFileAsync("filename")
    

推荐阅读