Folder Picker会在移动设备上引发异常

时间:2017-03-23 07:36:53

标签: c# .net uwp windows-10-universal

在我的Page.Loaded活动中,我有以下代码:

FolderPicker fp = new FolderPicker();
fp.SuggestedStartLocation = PickerLocationId.ComputerFolder;
fp.FileTypeFilter.Add("*");
var f = await fp.PickSingleFolderAsync(); // <-- Exception
...

Exceeption Details:

Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))

这在桌面上运行正常。

我尝试在FolderPicker中设置其他属性,但它没有改变任何东西。我还尝试在清单中添加功能。

我也看到有人建议这可能是因为选择器不止一次被调用,但在这里似乎并非如此,因为.Loaded事件只被调用一次

我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:1)

您不应该使用fp.FileTypeFilter.Add("*");

ms说你应该给它一个特殊类型。

你应该写picker.FileTypeFilter.Add(".jpg");

无论此类文件中是否存在该文件夹都没有影响。

我只说:llwr(辣鸡微软)

您需要添加特殊文件类型,但没有任何内容。

答案 1 :(得分:0)

通常桌面和移动应用的生命周期略有不同。不知道为什么在移动设备上,异常是在特定情况下抛出,但是MSDN says,理论上异常可以在应用程序被捕捉时发生。这不是那种情况,但可能会抛出异常,因为应用程序可能还没有完全准备就绪。在我尝试过不同的活动时,您应该可以在 GotFocus 事件中打开选择器:

private async void MainPage_GotFocus(object sender, RoutedEventArgs e)
{
    this.GotFocus -= MainPage_GotFocus;
    FolderPicker fp = new FolderPicker();
    fp.FileTypeFilter.Add(".jpg");
    var f = await fp.PickSingleFolderAsync();
}