我在C#中编写了一个Windows 10 Universal App,就像默认的Photo App一样。 Photo App允许在用户使用Photo App打开文件的目录中显示所有图像。但是当用户使用我的应用程序打开文件时,我只获得FileActivatedEventArgs,允许显示用户打开的文件。我找不到解决方案来向用户显示此文件目录中的其他文件。我认为问题是获得访问该文件的权限,因为当文件的文件夹在图片库中时,它可以工作。但Windows Photo App可以在任何地方使用,所以我认为必须有一个解决方案......
编辑:我试图从我的项目中提取一个非常简单的示例代码,仅在几行代码中显示相关部分
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));
}
}
答案 0 :(得分:2)
是的,您没有该文件夹的访问权限。在这种情况下,GetParentAsync()可能会下降。 您应该使用“IFileActivatedEventArgsWithNeighboringFiles”来解析相邻文件。通过使用此接口,OS的文件代理进程将相邻文件传递给您。
注意 - 此API是从Win8.1添加的。并且,当FileActivated激活时,Win8.0版本的Photo应用程序无法显示相邻文件。 Photo应用程序的Win8.1版本可以使用此API。
答案 1 :(得分:0)
您可能需要将以下内容添加到Package.appxmanifest文件中,以便您可以访问图片库,然后您应该可以使其工作:
<Capabilities>
<uap:Capability Name="picturesLibrary"/>
</Capabilities>