相机数据Intent为null

时间:2014-05-06 17:31:31

标签: java android

我看到了关于这个问题的其他问题和答案,但它们都没有为我工作。

我试图从相机拍摄照片并将其显示在图像视图中。 而且我还使用Helper类来获得更清晰的代码。

以下是Helper类中的代码:

拍照:

public static void getphoto(final Activity act, final int int, final Uri uri){

Intent cameraIntent = new Intent("android.media.action.IMAGE_CAPTURE");
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);  
act.startActivityForResult(cameraIntent, int);

        }

获得filpath:

    public static String pathgal(Activity act, Uri uri){

    String[] filePathColumn = {MediaStore.Images.Media.DATA};

    Cursor cursor = act.getContentResolver().query(uri, filePathColumn, null, null, null);
    if (cursor != null) {
    cursor.moveToFirst();

    int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
    String filePath = cursor.getString(columnIndex);
    cursor.close();

    return filePath;
    }
    return null;

}

得到结果:

if (requestCode == CAMERA_REQUEST) {
        if (resultCode == RESULT_OK) {
            String capturedImageFilePath = Helper.pathgal(act, mCapturedImageURI);
            bmp = Helper.decodeFile(capturedImageFilePath);

            Log.d("******CAMERAAAAAAA*******", "Camera fine 10");

            if(data != null)
            {
                Log.d("******CAMERAAAAAAA*******", "Camera fine 11");

                Helper.showpic(act, id1, bmp);

                Log.d("******CAMERAAAAAAA*******", "Camera fine 12");

            } else if (data == null) {
                Log.d("******CAMERAAAAAAA*******", "Camera fine 13");
                Toast.makeText(act.getApplicationContext(), "Data is Null",
                        Toast.LENGTH_SHORT).show();
            }

        }

}

现在,如果我在低级别的手机(如HTC野火版)上测试,一切正常,我得到的相机很好11和12"日志。但是,如果我在高级手机(如Galaxy s4)上测试它,它会给我"数据为空"和#34;相机罚款13"。

那么我应该如何阻止在那种设备中获取null?

1 个答案:

答案 0 :(得分:1)

当您在摄像机意图中使用uri传递额外参数MediaStore.EXTRA_OUTPUT时,您告诉摄像机活动将捕获的图像写入该路径,并且它不会在onActivityResult方法中返回位图。所以你在onActivityResult上得到了null。

cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri); //this line

你可能宁愿尝试这个

String capturedImageFilePath = Helper.pathgal(act, mCapturedImageURI);
        bmp = Helper.decodeFile(capturedImageFilePath);
if(bmp != null)
  {
    Helper.showpic(act, id1, bmp);
  } else{
      Toast.makeText(act.getApplicationContext(), "bmp is Null",Toast.LENGTH_SHORT).show();
  }