c# - 从 FileActivated 文件访问文件夹中的所有文件

标签 c# windows-runtime windows-10 win-universal-app

我用 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),操作系统的文件代理进程将相邻文件传递给您。

https://msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.activation.ifileactivatedeventargswithneighboringfiles

注意 - 此 API 是从 Win8.1 添加的。并且,Win8.0版本的照片应用程序在通过FileActivated激活时无法显示相邻文件。 Win8.1版本的照片应用程序可能会使用此API。

关于c# - 从 FileActivated 文件访问文件夹中的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31741615/

相关文章:

c# - 给定定义为父类的对象列表,有什么方法可以从子类访问变量?

c# - Metro-Style App 中的简单径向渐变背景

winforms - 在 VS2017 Winforms 应用程序中存在 IDE 缩放问题

c# - 在单元测试期间显示 winform

c# - 有没有办法从 azure blob 的容器文件夹中获取所有子文件夹名称?

windows-runtime - VLC 和 MJPEG 解码器流式传输( header 无效)

c# - slider 大小变化

powershell - 在 Windows 10 NAT 虚拟交换机上设置端口转发

windows - 有没有办法在 Windows 10 中手动添加 Web 凭据?

c# - 什么时候发生错误迁移( Entity Framework )