В axml описана кнопка, по клику на кнопку, нужно открыть галерею и передать в ViewModel путь к выбранному изображению. Реализация в рамках MVVMCross, нужен именно путь, так как он будет сохранятся в бд.
В первую очередь необходимо создать обьект, после взаимодействия с которым будет вызван метод CreateImageIntent();
private void CreateImageIntent()
{
var imageIntent = new Intent();
imageIntent.SetType("image/*");
imageIntent.SetAction(Intent.ActionGetContent);
StartActivityForResult(Intent.CreateChooser(imageIntent , "Select photo") , 0);
}
После выбора изображения и закрытия Активити галереи будет вызван метод
protected override void OnActivityResult(int requestCode , Android.App.Result resultCode , Intent data)
{
base.OnActivityResult(requestCode , resultCode , data);
if (resultCode == Android.App.Result.Ok)
{
Android.Net.Uri uri = data.Data;
imgPath.ImageUrl = uri.Path;
ImgPathHolder.ImgPathString = GetRealPathFromURI(uri);
}
}
А метод GetRealPathFromURI(); - вернет нам путь, который можно забиндить к ImageView
private string GetRealPathFromURI(Android.Net.Uri contentURI)
{
ICursor cursor = ContentResolver.Query(contentURI , null , null , null , null);
cursor.MoveToFirst();
string path = cursor.GetString(cursor.GetColumnIndex(MediaStore.Files.FileColumns.Data));
cursor.Close();
return path;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Что это за зверь, как это сделать и когда этот хинт лучше использовать?