未经授权的访问异常UWP

时间:2018-03-13 12:06:47

标签: c# exception io uwp storage

我制作了一个简单的UWP应用来测试一些代码

public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
        FlipButton.Click += new RoutedEventHandler(FlipButton_Click);
    }

    private async void FlipButton_Click(object sender, RoutedEventArgs e)
    {
        var sf = await StorageFile.GetFileFromApplicationUriAsync(new Uri(@"ms-appx:///test_pattern.png"));
        var original = await sf.OpenStreamForReadAsync();

        using (var stream = new SKManagedStream(original))
        using (var bitmap = SKBitmap.Decode(stream))
        {
            ITransform flip = new Flip(FlipOrientation.Vertical);
            SKBitmap result = flip.Perform(bitmap);

            StorageFolder storageFolder = await KnownFolders.GetFolderForUserAsync(null /* current user */, KnownFolderId.PicturesLibrary);
            StorageFile flipfile = await storageFolder.CreateFileAsync("flip_vertical.png", CreationCollisionOption.ReplaceExisting);
            Stream flipstream = await flipfile.OpenStreamForWriteAsync();

            using (SKManagedWStream wstream = new SKManagedWStream(flipstream))
            {
                result.Encode(wstream, SKEncodedImageFormat.Png, 100);
            }
        }
    }
}

它会在UnauthorizedAccessException行引发StorageFolder。我是UWP的新手,我不知道如何让它发挥作用......

PS。我使用的一些代码来自github上的Microsoft Samples ...

2 个答案:

答案 0 :(得分:1)

要访问PicturesLibrary文件夹,您需要将其声明为清单文件中的功能,如下所示:

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

有关应用功能声明的更多信息,请参见Microsoft Docs

答案 1 :(得分:0)

在UWP应用程序中,我们无法直接访问文件夹。它们提供了一些我们可以直接访问的文件夹的功能。但是,如果要访问整个文件系统,则可以添加功能受限的boardFileSystem。然后,您可以按其路径访问任何文件夹和文件。

有关更多信息,请访问此链接

https://docs.microsoft.com/en-us/windows/uwp/packaging/app-capability-declarations