Xbox One 上的 FileOpenPicker 总是 returns null

FileOpenPicker always returns null on Xbox One

我目前正在完成我的 UWP 应用程序的更新(在 Xbox One 和 Windows 10 上可用),但在测试时,我发现 FileOpenPicker 没有按预期工作:它 returns null 即使选择了一个文件,仅在 Xbox One 上。 (在 Windows 10 上一切正常,返回一个 StorageFile。)

代码如下:

FileOpenPicker picker = new FileOpenPicker // New picker with filters
{
    ViewMode = PickerViewMode.Thumbnail,
    SuggestedStartLocation = PickerLocationId.Downloads,
    FileTypeFilter = { ".zip", ".mcworld", ".mcpack", ".mcaddon" }
};

StorageFile packToImport = await picker.PickSingleFileAsync();

if (packToImport != null)
{
    try
    {
        Importer packImporter = new Importer();

        progressPanel.Visibility = Visibility.Visible;
        pTxt.Text = "Importing".GetLocalized();

        await Task.WhenAll(packImporter.Import(packToImport));

        progressPanel.Visibility = Visibility.Collapsed;
        pTxt.Text = string.Empty;
    }
    catch (Exception ex)
    {
        await MessageHelper.ShowContentBox("Error".GetLocalized(), ex.Message, "OK", "");
    }
    finally
    {
        NavigationHelper.ReloadPage(typeof(PacksView));
    }
}

如果文件为空,我尝试添加一个 else,并执行。所以问题不在Import()之后执行的函数中。

为了增加对发生的奇怪事情的精确度,FileOpenPicker 在旧版本的应用程序中工作(当前在 Microsoft Store 上发布);我在文件选择器代码中没有做任何更改。

编辑:我想澄清的是 UWP Limitations on Xbox One 网站引用了 FolderPicker,但 FilePicker 代替了它。

根据文档:

Folder picker scenarios Scenarios related to folder pickers are not supported on Xbox. See FolderPicker class.

来源:https://docs.microsoft.com/en-us/uwp/extension-sdks/uwp-limitations-on-xbox?redirectedfrom=MSDN

这意味着如果它起作用了,你就很幸运了,你不应该期望它起作用。即使该程序今天可以运行,以后的更新也可能会破坏它。

我设法让它工作了。只需要针对较旧的 Xbox 版本:)