Xamarin Forms и xam.plugin.media: не удалось разрешить ссылку на Xamarin.Essentials.Permissions - PullRequest
1 голос
/ 07 мая 2020

Я следую руководству о том, как просматривать изображения на телефоне с помощью Xamarin Forms. В MainPage.xaml у меня есть:

        <Button Text="Select a picture"
                Clicked="SelectImageButton_Clicked"/>
        <Image x:Name="selectedImage"/>
    </StackLayout>

В MainPage.xaml.cs следующий код для обработчика событий Click:

private async void SelectImageButton_Clicked(object sender, EventArgs e)
        {
            await CrossMedia.Current.Initialize();
            if (!CrossMedia.Current.IsPickPhotoSupported)
            {
                await DisplayAlert("Error", "This is not supported on your device", "OK");
                return;
            }

            var mediaOptions = new PickMediaOptions()
            {
                PhotoSize = PhotoSize.Medium
            };

            var selectedImageFile = await CrossMedia.Current.PickPhotoAsync(mediaOptions);

            if (selectedImageFile == null)
            {
                await DisplayAlert("Error", "The picture is null", "OK");
                return;
            }
                selectedImage.Source = ImageSource.FromStream(() => selectedImageFile.GetStream());

        }

Создание решения работает, но как только нажимаю кнопку в эмуляторе, выдает ошибку. Итак, я установил для компоновщика (Droid Properties > Android Options > Linking) только сборки Sdk.

Затем я получаю следующую ошибку при попытке построить решение:

Java.Interop.Tools.Diagnostics.XamarinAndroidException: error XA2006: Could not resolve reference to 'Xamarin.Essentials.Permissions/BasePlatformPermission' (defined in assembly 'Plugin.Media, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null') with scope 'Xamarin.Essentials, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. When the scope is different from the defining assembly, it usually means that the type is forwarded.

Я создал новый проект, обновил пакет Xamarin.Forms NuGet до версии 4.6.0.726, обновил версию Xamarin.Essentials до 1.5.3.1, а затем установил пакет xam.plugin.media версии 5.0.1

Пытаясь найти аналогичные проблемы с решениями, я обнаружил, что может быть ссылка на Essentials, которая не указывает на правильную версию, и что я должен изменить это в проекте Android в решении. Однако, поскольку я новичок в разработке Xamarin и Android, я не знаю, где найти эти ссылки. На правильном ли я пути к решению, и если да: какие шаги мне нужно предпринять, чтобы решить эту проблему?

If (!rightTrack)
{
return solution;
}

Заранее благодарим за ваш вклад!

1 Ответ

0 голосов
/ 11 мая 2020

Когда я тестирую ваш код с той же версией Xamarin.Forms, Xamarin.Essentials, xam.plugin.media, я воспроизводю ошибку BasePlatformPermission.

Вы можете использовать старую версию 4.0.1.5 xam.plugin.media. Ошибка будет исправлена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...