为什么捕获图像路径在android中返回null [英] why capture image path return null in android
问题描述
这是简单的图像捕捉应用程序..
在这段代码中,我使用了相机的意图和捕获后的图像,并从相机按下确定到图像视图
但是当我尝试从意图中覆盖图像的路径时,它返回一个空指针异常。
为什么它会返回null ????
如果图像设置为imageview所以它存储在android模拟器的任何地方,为什么它返回null?
this is simple image capture App..
In this code,i use intent for camera and after capture image and press ok from camera it set to image view
but when i try toast the path of image from intent it returns a null pointer exception.
Why does it return null????
if the image is set to the imageview so it store at any place in android emulator so why does it return null??
public class CameraAppActivity extends Activity implements OnClickListener {
Button btnsetwall;
ImageButton imgbtntakeph;
ImageView Imview;
static final int REQUEST_IMAGE_CAPTURE = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.camera_app);
Imview = (ImageView) findViewById(R.id.imageView1);
imgbtntakeph = (ImageButton) findViewById(R.id.imageButton1);
btnsetwall = (Button) findViewById(R.id.button1);
imgbtntakeph.setOnClickListener(this);
btnsetwall.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.camera_app, menu);
return true;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.imageButton1:
dispatchTakePictureIntent();
case R.id.button1:
break;
}
}
private void dispatchTakePictureIntent() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
Imview.setImageBitmap(imageBitmap);
Toast.makeText(CameraAppActivity.this,"Here "+ data.getData(), Toast.LENGTH_LONG).show();
}
}
}
推荐答案
尝试
Try
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
Imview.setImageBitmap(imageBitmap);
// CALL THIS METHOD TO GET THE URI FROM THE BITMAP
Uri tempUri = getImageUri(getApplicationContext(), imageBitmap);
// CALL THIS METHOD TO GET THE ACTUAL PATH
Toast.makeText(CameraAppActivity.this,"Here "+ getRealPathFromURI(tempUri), Toast.LENGTH_LONG).show();
}
}
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);
}
public String getRealPathFromURI(Uri uri) {
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
cursor.moveToFirst();
int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
return cursor.getString(idx);
}
如需了解更多信息,请查看 http://stackoverflow.com/questions/20327213/getting-path-of-captured-image-in-android-using-camera-意图 [ ^ ]
希望这会有所帮助。
For more info check http://stackoverflow.com/questions/20327213/getting-path-of-captured-image-in-android-using-camera-intent[^]
Hope this helps.
这篇关于为什么捕获图像路径在android中返回null的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!