拍摄照片时,onActivityResult中的Intent为null

时间:2015-10-21 21:32:04

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

Stackoverflow中有关于此主题的一些问题,但是,它们都没有解决我的问题。

我有一个帮助类,我激活相机拍照。这是调用活动的代码:

        private void dispatchTakePictureIntent() {
            Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            if (takePictureIntent.resolveActivity(activity.getPackageManager()) != null) {
                Image img = new Image();
                // crea el archivo en donde se almacenará la foto
                File photoFile = null;
                try {
                    photoFile = img.createImageFile(activity.getApplicationContext());
                } catch (IOException e) {
                    Log.e("Photo", e.getMessage());
                }

                if (photoFile != null) {
                    takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
                            Uri.fromFile(photoFile));
                    activity.startActivityForResult(takePictureIntent, ((FormActivity) activity).REQUEST_TAKE_PHOTO);
                }
            }

当我拍照并按" OK"选项,我看到图像正确存储在路径中(我在使用电话文件管理器浏览时找到它)。当按下" OK"时,实际上会调用活动的onActivityResult,但是使用null Intent,所以我不知道如何获取文件名,以便我可以调整它的大小,然后将其存储在数据库。

我该怎么办? 感谢

编辑:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_TAKE_PHOTO && resultCode == RESULT_OK) {
        try {
            Bundle extras = data.getExtras();
            Uri file = (Uri) extras.get(MediaStore.EXTRA_OUTPUT);
            Image img = new Image(file.getPath());
            img.resizeImage(200, 200);
            //Bitmap imageBitmap = (Bitmap) extras.get("data");
            //Image img = new Image();
            //mImageView.setImageBitmap(imageBitmap);
        }
        catch (Exception e)
        {
            Log.e("TDC@", e.getMessage());
        }
    }
    else
        super.onActivityResult(requestCode, resultCode, data);
}

0 个答案:

没有答案