我用 C# 编写了一个 Windows 10 通用应用程序,就像默认的照片应用程序一样。照片应用程序允许显示用户使用照片应用程序打开文件的目录中的所有图像。但是,当用户使用我的应用程序打开文件时,我仅获得 FileActivatedEventArgs 并允许显示用户打开的文件。我找不到解决方案来向用户显示该文件目录中的其他文件。我认为问题在于获得访问该文件的权限,因为当文件的文件夹位于图片库中时它就可以工作。但是 Windows 照片应用程序可以随处使用,所以我认为必须有一个解决方案......
编辑:我尝试从我的项目中提取一个非常简单的示例代码,仅用几行代码即可显示相关部分
public static async Task<BitmapImage> LoadImage(StorageFile file)
{
BitmapImage bitmapImage = new BitmapImage();
FileRandomAccessStream stream = (FileRandomAccessStream)await file.OpenAsync(FileAccessMode.Read);
bitmapImage.SetSource(stream);
return bitmapImage;
}
private async void setImages(FileActivatedEventArgs args)
{
StorageFile si = (StorageFile)App.args.Files.First();
StorageFolder st = await si.GetParentAsync();
StorageApplicationPermissions.FutureAccessList.Add(st);
IReadOnlyList<StorageFile> sflist = await st.GetFilesAsync();
foreach (StorageFile sf in sflist)
{
imageList.Add(await LoadImage(sf));
}
}
最佳答案
是的,您没有该文件夹的访问权限。在这种情况下,GetParentAsync()可能会失败。 您应该使用“IFileActivatedEventArgsWithNeighboringFiles”来解析相邻文件。通过使用此接口(interface),操作系统的文件代理进程将相邻文件传递给您。
注意 - 此 API 是从 Win8.1 添加的。并且,Win8.0版本的照片应用程序在通过FileActivated激活时无法显示相邻文件。 Win8.1版本的照片应用程序可能会使用此API。
关于c# - 从 FileActivated 文件访问文件夹中的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31741615/