0

我这里有一个跨平台应用程序,用于DependencyService获取我的日志文件的文件路径。这适用于ApplicationData.Current.LocalCacheFolder.Path,但现在应该使用户可以访问日志文件。这个想法是用户将他的设备插入 PC,从中复制日志文件,然后通过普通电子邮件将其发送给我。(目前,不打算通过商店分发应用程序,也不能保证用户在其设备上设置了电子邮件帐户。)

首先,我尝试了KnownFolders.DocumentsLibrary,但在这里我得到了Access is denied。如果我查看文档,则此文件夹不适合我使用。其他位置似乎也不适合。

这种方法在 UWP 中可行吗?

4

2 回答 2

0

您需要添加访问权限documentsLibraryKnownFolders.DocumentsLibrary

要添加转到YourApp.UWP>“功能”选项卡中的“Package.appxmanifest”并检查您要存储的功能。示例:“图片库”或“可移动存储”

于 2017-07-24T10:49:31.073 回答
0

新分析器:

我发现,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);

老答案:

我目前的解决方案是在我的应用程序中提供一个按钮,该按钮本机调用FolderPickerviaDependencyService并且仅在 UWP 上。有了这个,用户可以选择位置,然后我将文件复制到这个位置。效果很好,尽管我希望我不必只为一个平台做某事。

于 2017-07-25T09:52:37.537 回答