我这里有一个跨平台的应用程序,它使用DependencyService
来获取我的日志文件的文件路径。这适用于ApplicationData.Current.LocalCacheFolder.Path
,但现在应该可以让用户访问日志文件。想法是用户将他的设备插入PC,从中复制日志文件,然后通过普通电子邮件发送给我。 (目前,不打算通过商店分发应用程序,并且无法保证用户在其设备上设置了电子邮件帐户。)
首先,我尝试使用KnownFolders.DocumentsLibrary
,但在这里我得到了Access is denied
。如果我查看documentation,此文件夹不适合我使用。其他地方似乎也不适合。
这种方法在UWP中是否可行?
答案 0 :(得分:0)
您需要添加documentsLibrary
KnownFolders.DocumentsLibrary
来访问YourApp.UWP
要添加到AA:AA:AA:AA:AA:AA
>中的“Package.appxmanifest” “功能”选项卡,并检查要存储的功能。示例:“图片库”或“可移动存储”
答案 1 :(得分:0)
新的anser:
我发现,value is 0x00100003
仅发生在桌面上,而非移动版。之后,我找到了this post,它描述了为什么会这样。这是因为permission handling并且我丢弃了我的权限。如何处理这种情况有几种可能性:
FutureAccessList
示例:
Access denied
示例:
FolderPicker folderPicker = new FolderPicker();
folderPicker.FileTypeFilter.Add("*");
StorageFolder folder = await folderPicker.PickSingleFolderAsync();
if (folder != null)
{
StorageApplicationPermissions.FutureAccessList.AddOrReplace("PickedFolderToken", folder);
}
StorageFolder newFolder;
newFolder = await StorageApplicationPermissions.FutureAccessList.GetFolderAsync("PickedFolderToken");
await newFolder.CreateFileAsync("test.txt");
旧回答:
我目前的解决方案是,我在我的应用中提供了一个按钮,该按钮通过StorageFolder tempFolder = await StorageFolder.GetFolderFromPathAsync(Path.Combine(ApplicationData.Current.LocalCacheFolder.Path, "YourApp"));
StorageFile tempFile = await tempFolder.CreateFileAsync(Path.GetFileName(pathToAttachment), CreationCollisionOption.ReplaceExisting);
await file.CopyAndReplaceAsync(tempFile);
本地调用FolderPicker
,仅在UWP上调用。有了这个,用户可以选择位置,然后将文件复制到此位置。很好地工作,尽管我希望我不必只为一个平台做一些事情。