在onActivityResult方法中学习捕获图像的路径

时间:2012-01-12 10:28:50

标签: android android-camera

@Override
protected void onCreate(Bundle savedInstanceState) {      
    super.onCreate(savedInstanceState);
    setContentView(R.layout.picture_choice_activity);

    Button takePictureButton = (Button)findViewById(R.id.takePictureButton);
    takePictureButton.setOnClickListener(new OnClickListener() {
        public void onClick(View v){
            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(intent, IMAGE_CAPTURE);
        }
    });
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(requestCode == IMAGE_CAPTURE){
        if(resultCode == Activity.RESULT_OK){
            // I should get the path here
        }else if(resultCode == Activity.RESULT_CANCELED){

        }
    }
}

在上面的代码中,我试图获取捕获图像的路径。我不应该使用EXTRA_OUTPUT指定保存图像的自定义路径。我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

在onActivityresult

中使用此功能
final Uri contentUri = data.getData();
final String[] proj = { MediaStore.Images.Media.DATA};
final Cursor cursor = managedQuery(contentUri, proj, null, null, null);
final int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToLast();
final String path = cursor.getString(column_index);

答案 1 :(得分:2)

请检查http://developer.android.com/guide/topics/media/camera.html#intents

MediaStore.EXTRA_OUTPUT:此设置需要一个Uri对象,指定您要保存图片的路径和文件名。此设置是可选的,但强烈建议使用。如果未指定此值,则摄像头应用程序会将所请求的图片保存在默认位置,并使用在返回的intent的Intent.getData()字段中指定的默认名称。

所以,请查看Intent data

中的onActivityResult()