当我试图将图片上传到从相机拍摄的firebase时,Nullpointer异常

时间:2016-12-23 16:13:33

标签: android firebase camera firebase-storage

我正在尝试上传从相机拍摄的照片,我得到了Nullpointer异常,这里是代码:

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == GALLERY_INTENT  && resultCode == RESULT_OK){
        uri= data.getData();
        mImagenIv.setImageURI(uri);

        StorageReference filepath = mStorage.child("fotos").child(uri.getLastPathSegment());
        filepath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {


                Toast.makeText(getApplicationContext(),"si señor",Toast.LENGTH_LONG).show();
            }
        });
    } else if(requestCode == CAMERA_INTENT && resultCode == RESULT_OK){
        Bitmap  bitmap = (Bitmap) data.getExtras().get("data");
       Uri uri= data.getData();
        mImagenIv.setImageBitmap(bitmap);


        StorageReference filepath = mStorage.child("fotos").child(uri.getLastPathSegment());
        filepath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {


                Toast.makeText(getApplicationContext(),"si señor",Toast.LENGTH_LONG).show();
            }
        });
    }
}

当我从存储中选择一个代码按预期工作的图片时,我使用相同的代码时的事情。空指针我在下面一行得到它:

StorageReference filepath = mStorage.child("fotos").child(uri.getLastPathSegment());

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

假设startActivityForResult() CAMERA_INTENT号召用ACTION_IMAGE_CAPTURE正在使用data.getData()null应始终返回Bitmap bitmap = (Bitmap) data.getExtras().get("data");。如果Bitmap有效,那么Bitmap就是您的照片。您需要通过某种方式将其传达给Firebase。如果Firebase API不接受compress(),您可能必须使用Bitmap将{{1}}写入某个临时文件以用于Firebase。