我正在尝试上传从相机拍摄的照片,但出现空指针异常,这是代码:
@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_INTENT
的startActivityForResult()
调用使用的是ACTION_IMAGE_CAPTURE
,data.getData()
应该始终返回null
。如果Bitmap bitmap = (Bitmap) data.getExtras().get("data");
正常工作,则该Bitmap
就是您的照片。您需要通过一种或另一种方式将其发送到Firebase。如果 Firebase API 不接受Bitmap
,您可能需要使用compress()
将该Bitmap
写入某个临时文件以用于 Firebase。