OpenFilePicker не работает на Windows Phone 8 (указанный метод не поддерживается)

Я пытаюсь просто выбрать файл, используя:

private async void Button_Click_1(object sender, RoutedEventArgs e)
{
    try
    {
            FileOpenPicker openPicker = new FileOpenPicker();
            openPicker.ViewMode = PickerViewMode.Thumbnail;
            openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
            openPicker.FileTypeFilter.Add(".jpg");
            openPicker.FileTypeFilter.Add(".jpeg");
            openPicker.FileTypeFilter.Add(".png");

            StorageFile file = await openPicker.PickSingleFileAsync();
            if (file != null)
            {
                // Application now has read/write access to the picked file
                txt.Text = "Picked file: " + file.Name;
            }
            else
            {
                txt.Text = "Operation cancelled.";
            }

    }
    catch (Exception exception)
    {
        txt.Text = exception.Message;
    }
}

... но он выдает исключение: `Указанный метод не поддерживается.";

Я скопировал и вставил код из Windows Phone 8 документов. Ни один из их образцов не работает. Я подумал, что, может быть, мне не хватает возможности Документа / Контракта или чего-то еще, но они даже не существуют в VS для приложений Phone.

Почему это не сработает?

Я проследил это до самой первой строки попытки:

FileOpenPicker openPicker = new FileOpenPicker(); // this is the line the exception is thrown on.

4 ответа

Решение

Согласно MSDN-форумам и ответу от того, что я предполагаю, является сотрудником MS ( здесь):

В настоящее время мы не поддерживаем выбор файлов, кроме фотографий, или выбор файлов из других приложений Магазина.

Похоже, вы застряли с PhotoChooserTask вместо FileOpenPicker,

Это работает, но только для Windows Phone 8.1 (Windows Phone), а не для Windows Phone 8.0/8.1 (Windows Phone Silverlight).

Вот код:

FileOpenPicker singleFilePicker = new FileOpenPicker();
        singleFilePicker.ViewMode = PickerViewMode.Thumbnail;
        singleFilePicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
        singleFilePicker.FileTypeFilter.Add(".jpg");
        singleFilePicker.FileTypeFilter.Add(".jpeg");
        singleFilePicker.FileTypeFilter.Add(".png");
        singleFilePicker.PickSingleFileAndContinue();

Добавьте этот метод для обработки выбранных фотографий:

public void ContinueFileOpenPicker(FileOpenPickerContinuationEventArgs args)
    {
        if (args.Files.Count > 0)
        {
            var userChosenbPhoto = args.Files[0].Name;
        }
        else
        {
            //user canceled picker
        }
    }

Вы также можете получить несколько файлов.

И последнее, но самое главное, вам нужно добавить класс менеджера продолжения в ваш проект. Это будет управлять повторной активацией приложения при возврате из выбора. Перейдите к этой документации, чтобы узнать, как добавить ContinuationManager в проект (извините за ссылку, слишком много информации для размещения здесь).

Вы можете использовать только FileOpenPicker из родных приложений, таких как Direct3D.

Вместо этого вы можете использовать PhotoChooserTask, чтобы выбрать изображение из Pictures Hub.

В соответствии с документацией упоминается, что: Минимально поддерживаемый телефон: не поддерживается

Проверьте эту ссылку для получения подробной информации http://msdn.microsoft.com/en-us/library/windowsphone/develop/br207852.aspx

Другие вопросы по тегам