当我尝试将从相机拍摄的图片上传到Firebase时出现空指针异常



我正在尝试上传从相机拍摄的照片,但出现空指针异常,这是代码:

@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());

有人可以帮助我吗?

假设CAMERA_INTENTstartActivityForResult()调用使用的是ACTION_IMAGE_CAPTUREdata.getData()应该始终返回null。如果Bitmap bitmap = (Bitmap) data.getExtras().get("data");正常工作,则该Bitmap就是您的照片。您需要通过一种或另一种方式将其发送到Firebase。如果 Firebase API 不接受Bitmap,您可能需要使用compress()将该Bitmap写入某个临时文件以用于 Firebase。

最新更新