文件夹选取器在移动设备上引发异常

Folder Picker throws an exception on mobile

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

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

异常详情:

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

这在桌面上运行良好。

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

我也看到有人说这可能是因为选择器被调用了不止一次,但这里似乎不是这种情况,因为 .Loaded 事件只被调用了一次。

我是不是遗漏了什么?

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

女士说你应该给它一个特殊的类型。

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

无论文件夹中是否存在此类文件均不影响。

我就说:llwr(辣鸡微软)

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

通常桌面和移动应用的生命周期略有不同。不确定为什么在移动设备上会在特定情况下抛出异常,但是 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();
}