文件夹选取器在移动设备上引发异常
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();
}
在我的 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();
}