c# - 使用 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>
为什么图像不显示?
提前致谢!
解决方案
我想到了。您的应用似乎没有从文件存储中读取的权限。
您应该添加该行
<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);
}
现在,如果您运行该应用程序,它会询问权限,并且(如果是肯定的答案,显然)图像将被加载。
推荐阅读
- node.js - 在 Heroku 上部署 Vue 应用程序时出现意外的语法错误
- java - IDE 连接 GitHub 后不显示 Android Studio 中的所有功能
- python - 使用 Reactjs 和 Flask 上传文件
- android - 清单合并失败:属性 application@appComponentFactory 错误。请检查我的依赖项并找到错误
- tsql - 递归运行余额(Encash 奖励优惠)
- python-3.x - 无法找到 scipy 的源代码
- powerbi - Power BI - 用于计算前 31 天销售额的 DAX 度量 - 'DATEADD' 期望连续选择
- python - 无法跳到 for 循环语句中的下一次迭代
- python - cffi.error.FFIError:函数的多个声明
- android - Android 数据文件如何映射到我使用 adb shell 访问的内容?