首页 > 解决方案 > 使用 xamarin 表单查看图像

问题描述

我应该从内部存储器中查看图像。

代码:

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);
    }
}

xml:

<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>

为什么图像不显示?

提前致谢!

标签: c#imagefilexamarin.formspath

解决方案


我想到了。您的应用似乎没有从文件存储中读取的权限。

您应该添加该行

<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);
        }

现在,如果您运行该应用程序,它会询问权限,并且(如果是肯定的答案,显然)图像将被加载。


推荐阅读