获取Android相机点击的图片路径

时间:2015-03-18 20:48:02

标签: android android-intent android-camera-intent

我需要使用Android设备上的默认相机应用程序单击图像,然后获取刚刚单击的图像路径。我从这篇文章中得到了帮助

stackoverflow forum link

我的代码如下

public void MarkIn(View view) {

    String fileName = "temp.jpg";
    final int CAPTURE_PICTURE_INTENT = 1;
    ContentValues values = new ContentValues();
    values.put(MediaStore.Images.Media.TITLE, fileName);
    mCapturedImageURI = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);

    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    intent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI);
    startActivityForResult(intent, CAPTURE_PICTURE_INTENT);

    String imagePath = capturedImageFilePath;

// .....some code.....

}


protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == 1 && resultCode == Activity.RESULT_OK) {
            String[] projection = { MediaStore.Images.Media.DATA };
            Cursor cursor = null;
            cursor = getApplicationContext().getContentResolver().query(mCapturedImageURI, projection, null, null, null);
            int column_index_data = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
            cursor.moveToFirst();
            capturedImageFilePath = cursor.getString(column_index_data);
        }
    }

系统不等待活动完成。由于我的...一些代码...在上面的代码片段中依赖于文件路径,我得到空指针异常。

如何使代码执行等到活动完成。

2 个答案:

答案 0 :(得分:1)

首先应该在图像上单击图像位图,然后使用此代码将该位图转换为uri。:- public Uri getImageUri(Context inContext,Bitmap inImage){

  ByteArrayOutputStream bytes = new ByteArrayOutputStream();
  inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
  String path = Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
  return Uri.parse(path);
}

试试这个,让我知道。

答案 1 :(得分:0)

这可能是因为您使用的是sdk 19或更高版本.Android改变了我们从KitKat访问数据的方式。