提问者:小点点

从文件访问文件夹中的所有文件激活文件


我用C#编写了一个Windows 10通用应用程序,就像默认的照片应用程序一样。Photo App允许显示用户使用Photo App打开文件所在目录中的所有图像。但是当用户用我的应用程序打开一个文件时,我只得到FileActivatedEventArgs,它允许显示用户打开的文件。我发现没有解决方案显示用户的其他文件从这个文件的目录太。我认为问题在于获得访问该文件的权限,因为当该文件的文件夹在图片库中时,它会工作。但是Windows Photo应用程序可以随处使用,所以我认为一定有一个解决方案…。

编辑:我试图从我的项目中提取一个非常简单的示例代码,它只显示了几行代码中的相关部分

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));
    }
}

共2个答案

匿名用户

是,您没有该文件夹的访问权限。在这种情况下,GetParentAsync()可能会下降。您应该使用“IFileActivatedEventArgsWithNeighboringFiles”来解析相邻文件。通过使用该接口,OSS的文件代理进程将相邻文件传递给您。

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

注意-这个API是从Win8.1添加的。而且,当被FileActivated激活时,WIN8.0版本的Photo app不能显示相邻的文件。照片应用程序的Win8.1版本可能使用此API。

匿名用户

您可能需要将以下内容添加到package.appxmanifest文件中,以便访问图片库,然后您应该能够使其工作:

<Capabilities> 
   <uap:Capability Name="picturesLibrary"/> 
</Capabilities>