相机数据意图为空



我看到了关于这个问题的其他问题和答案,但是它们都不适合我。

我正在尝试从相机拍摄照片并将其显示在imageview中。我也使用一个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 wildfire s)上测试这个,一切都工作得很好,我得到了"相机良好11和12"的日志。但如果我在高端手机(比如Galaxy s4)上测试它,它会给我"数据为空"one_answers"摄像头良好13"。

那么我应该如何防止在这种设备中得到null呢?

当您传递额外的参数MediaStore时。EXTRA_OUTPUT with uri在camera intent中,你告诉camera activity将捕获的图像写入该路径,并且它不会在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();
  }

最新更新