Android拍照获得图片URI为空的处理方法

看文章咯,反正最近被相机这块搞的有点疯。
android拍照获得图片URI为空的处理方法
Android_照相机Camera_调用系统照相机返回data为空

拍照的方法:

  public void takePhoto() {
        destoryBimap();
        String state = Environment.getExternalStorageState();
        if (state.equals(Environment.MEDIA_MOUNTED)) {
            Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
//这个是指定的uri地址,所以注释掉 如果指定了目标uri,data就没有数据,如果没有指定uri,则data就返回有数据 
//            intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
            startActivityForResult(intent, PHOTO_WITH_CAMERA);
        } else {
            Toast.makeText(getActivity(), "没有SD卡", Toast.LENGTH_LONG).show();
        }
    }

onActivityResult方法中接收。

  Bundle bundle =data.getExtras();
  //获取相机返回的数据,并转换为Bitmap图片格式    
                    aphoto = (Bitmap)bundle.get("data");
                    if (data.getData()!=null){
                     imageUri =data.getData();
                    }else {
                        imageUri = Uri.parse(MediaStore.Images.Media.insertImage(getActivity().getContentResolver(), aphoto, null,null));
                    }
//                    裁剪照片的方法
                    copePhoto(imageUri);

裁剪的方法。

   public void copePhoto(Uri uri){
        destoryBimap();
        String state = Environment.getExternalStorageState();
        if (state.equals(Environment.MEDIA_MOUNTED)) {
            Intent  intent = new Intent();
            intent.setAction("com.android.camera.action.CROP");
            intent.setDataAndType(uri,"image/*");
            intent.putExtra("cope","true");
            intent.putExtra("aspectX", 1);// 裁剪框比例
            intent.putExtra("aspectY", 1);
            intent.putExtra("outputX", 200);// 输出图片大小
            intent.putExtra("outputY", 150);
            intent.putExtra("return-data", true);
            startActivityForResult(intent,PHOTO_COPE);
        } else {
            Toast.makeText(getActivity(), "没有SD卡", Toast.LENGTH_LONG).show();
        }
    }

onActivityResult方法中接收。

 Bundle bundle = data.getExtras();
 photo = bundle.getParcelable("data");

完。

你可能感兴趣的:(编程代码)