我想添加到lanks的解决方案。
比方说,您使用下面的代码进行拍照
var uri = ContentResolver.Insert(MediaStore.Images.Media.ExternalContentUri,
new ContentValues());
var intent = new Intent(MediaStore.ActionImageCapture);
intent.PutExtra(MediaStore.ExtraOutput, uri);
StartActivityForResult(intent, ACTIVITY_RESULT_PICTURE_TAKEN);
pictureUri = uri;
凡ACTIVITY_RESULT_PICTURE_TAKEN只是一个简单的价值,你可以在 OnActivityResult使用它来检查活动被完成。
你OnActivityResult可能是这个样子:
protected override void OnActivityResult(int requestCode,
Result resultCode, Intent data)
{
if (resultCode == Result.Ok && requestCode == ACTIVITY_RESULT_PICTURE_TAKEN)
{
string picturePath = GetRealPathFromURI(pictureUri);
//Do something with the file
}
}
你早点起床URI是具体到Android的东西,需要翻译。
它看起来像“// content:// media/external/media/11917”,它不是 有效路径。
哪个是GetRealPathFromURI功能不正是:
public string GetRealPathFromURI(Android.Net.Uri contentUri)
{
var mediaStoreImagesMediaData = "_data";
string[] projection = { mediaStoreImagesMediaData };
Android.Database.ICursor cursor = this.ManagedQuery(contentUri, projection,
null, null, null);
int columnIndex = cursor.GetColumnIndexOrThrow(mediaStoreImagesMediaData);
cursor.MoveToFirst();
return cursor.GetString(columnIndex);
}
一旦你得到了真正的路径,你可以把它移到无论你想为lanks建议。