Просмотр изображения с помощью форм xamarin - PullRequest
0 голосов
/ 19 марта 2020

Я должен просматривать изображение из внутренней памяти.

Код:

public partial class MainPage : ContentPage
{
    static readonly File file = new File(Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryPictures), "tmp.jpg");

    public MainPage()
    {
        InitializeComponent();
    }

    private void Button_Clicked(object sender, EventArgs e)
    {
        bool exists = file.Exists(); // exists = true
        ImageExample.Source = ImageSource.FromFile(file.Path);
    }
}

xaml:

<StackLayout>
    <Button HeightRequest="100" 
            WidthRequest="200"
            HorizontalOptions="Center" 
            VerticalOptions="Center" 
            Clicked="Button_Clicked"/>
    <Image x:Name="ImageExample" 
           HorizontalOptions="FillAndExpand" 
           VerticalOptions="FillAndExpand"
           WidthRequest="200" 
           HeightRequest="100"/>
</StackLayout>

Почему изображение не отображается?

Заранее спасибо!

1 Ответ

1 голос
/ 19 марта 2020

Я понял это. Похоже, у вашего приложения нет прав на чтение из хранилища файлов.

Вы должны добавить строку

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

в файл AndroidManifest.xml (находится в подпапке Properties в папку <your-app-name>.Android).

Кроме того, вы должны добавить в файл MainActivity.cs:

 using Android;
 using Android.Support.V4.App;
 .... 
    const int OurRequest = 2;

    protected override void OnCreate(Bundle savedInstanceState)
    {
        ....
        var permission = new string[1];
        if (Android.Support.V4.Content.ContextCompat.CheckSelfPermission(this, Manifest.Permission.ReadExternalStorage) != Permission.Granted)
        {
            permission[0] = Manifest.Permission.ReadExternalStorage;
            ActivityCompat.RequestPermissions(this, permission, OurRequest);
        }

Теперь, если вы запустите приложение, оно спросит о разрешении и (в случае, если положительного ответа, очевидно) изображение будет загружено.

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