为什么捕获图像路径在android中返回null [英] why capture image path return null in android

查看:42
本文介绍了为什么捕获图像路径在android中返回null的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是简单的图像捕捉应用程序..



在这段代码中,我使用了相机的意图和捕获后的图像,并从相机按下确定到图像视图



但是当我尝试从意图中覆盖图像的路径时,它返回一个空指针异常。



为什么它会返回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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆