Получение пути к файлу с изображения в ImageView

Хорошо, что я делаю приложение для Android, и используя CAPTURE_PIC_REQUEST, чтобы сделать снимок и сохранить его как предварительный просмотр на экране в imageviewer. Я хотел знать, как получить Uri и фактически путь, потому что я планирую взять эту информацию, сохраняя ее и получая доступ к ней позже. Поэтому я не могу понять, как получить имя Uri или путь от этой фотографии, которую я только что взял. Вот код из моей деятельности, который обрабатывает

package com.CS480; import java.io.File; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ImageView; public class AddEx extends Activity { static final int CAMERA_PIC_REQUEST = 1337; public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.add); Button camera = (Button) findViewById(R.id.picButton); camera.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if (requestCode == CAMERA_PIC_REQUEST) { Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); ImageView image = (ImageView) findViewById(R.id.returnedPic); image.setImageBitmap(thumbnail); } } } 

Итак, как из этого образа, который я возвращаю в приложение, я получаю местоположение файла

Solutions Collecting From Web of "Получение пути к файлу с изображения в ImageView"

Насколько я знаю, вы можете сделать что-то вроде этого:

 private Uri mImageCaptureUri; public class AddEx extends Activity { static final int CAMERA_PIC_REQUEST = 1337; public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.add); Button camera = (Button) findViewById(R.id.picButton); camera.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); cameraIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri); startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if (requestCode == CAMERA_PIC_REQUEST) { Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); ImageView image = (ImageView) findViewById(R.id.returnedPic); image.setImageBitmap(thumbnail); String pathToImage = mImageCaptureUri.getPath(); // pathToImage is a path you need. // If image file is not in there, // you can save it yourself manually with this code: File file = new File(mImageCaptureUri.getPath()); FileOutputStream fOut = new FileOutputStream(file); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fOut); // You can choose any format you want } } 

Из документации по Android о android.provider.MediaStore.EXTRA_OUTPUT:

Имя Intent-extra, используемое для указания разрешителя контента Uri для хранения запрошенного изображения или видео.

Вы можете попробовать получить URI изображения с помощью

 data.getExtras.get("URI"); 

Но это может не сработать. Вы можете просто сохранить битмап самостоятельно. См. Этот вопрос для руководства о том, как это сделать: сохранить растровое изображение в местоположении

Когда вы берете свое изображение, вы должны сохранить его где-нибудь, чтобы получить местоположение изображения.

Для этого вы можете сохранить в MediaStore:

 String result = MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, "", ""); imageFileUri = Uri.parse(result); 

В документации по Android содержится пример определения URI файла для сохранения вывода при настройке Intent для захвата изображения .