我想添加到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建議。