【发布时间】:2020-10-31 23:49:22
【问题描述】:
我正在尝试获取上传到 firebase 数据库的图片的下载网址。但是 Task Uri imageURL = storageReference.getDownloadUrl(); 没有给出存储在 firebase 存储中的图像的实际下载 URL,即它给出了这个 - com.google.android.gms.tasks.zzu@27da5837
getdownloadUrl() 在不推荐使用的情况下不起作用:
Uri imageUrl = storagereference.getdownloadUrl(); //报错
请看这里的代码:
final StorageReference storageReference = FirebaseStorage.getInstance().getReference().child("images").child(imageName);
final UploadTask uploadTask = storageReference.putBytes(data);
uploadTask.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle unsuccessful uploads
Toast.makeText(CreateSnapActivity.this, "Upload Failed", Toast.LENGTH_SHORT).show();
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(final UploadTask.TaskSnapshot taskSnapshot) {
// taskSnapshot.getMetadata() contains file metadata such as size, content-type, etc.
//Task<Uri> imageURL = storageReference.getDownloadUrl();
//Log.i("URL", imageURL.toString()); // gives this url - com.google.android.gms.tasks.zzu@27da5837 which is not correct
Task<Uri> urlTask = storageReference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Log.i("Url", String.valueOf(uri));
imageUrl = uri.toString(); //Gives the correct url but it cannot store this uri value outside this function i.e for Intent shown below outside this func.
}
});
Toast.makeText(CreateSnapActivity.this, "Uploaded", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(CreateSnapActivity.this, ChooseUserActivity.class);
intent.putExtra("imageName", imageName);
intent.putExtra("imageURL", imageUrl);
intent.putExtra("message", captionEditText.getText().toString());
startActivity(intent);
}
});
【问题讨论】:
-
" //Gives error" -> 你得到的确切错误是什么?如果是异常,还包括完整的堆栈跟踪。您可以通过单击其下方的
edit链接将两者都添加到您的问题中。
标签: android firebase firebase-realtime-database firebase-storage