我是新成员。我对java以及Firebase在最近几周中还是比较陌生。我试图在代码实验室frebase android教程中迷路,并已完成本课程“第8部分”中要求的最新更新,https://codelabs.developers.google.com/codelabs/firebase-android/#7
在第8部分的结尾,我们被要求在MainActivity.java中添加一个“ putImageInStorage”方法
private void putImageInStorage(StorageReference storageReference, Uri uri, final String key) {storageReference.putFile(uri).addOnCompleteListener(MainActivity.this,
new OnCompleteListener<UploadTask.TaskSnapshot>() {
@Override
public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
if (task.isSuccessful()) {
FriendlyMessage friendlyMessage =
new FriendlyMessage(null, mUsername, mPhotoUrl,
task.getResult().getMetadata().**getDownloadUrl()**
.toString());
mFirebaseDatabaseReference.child(MESSAGES_CHILD).child(key)
.setValue(friendlyMessage);
} else {
Log.w(TAG, "Image upload task was not successful.",
task.getException());
}
}
});
}
但是,当我按照指示运行该IDE时,它无法编译,并引用以下部分作为问题:“ .getDownloadUrl()” 我花了几个小时寻找解决方案,看来这已被“弃用”。我确实尝试按照getDownloadUrl() of firebase storage return the same and wrong link for all the uploaded files. How to fix this?的建议换掉代码行(即使用 * task.getMetadata()。getReference()。getDownloadUrl()。toString() * 代替 - * task.getResult()。getStorage()。getDownloadUrl()。toString(),但这似乎不起作用。 然后,我尝试运行在stackoverflow上发现的此方法,但现在它使我的应用程序崩溃(“不幸的是,友好聊天已停止”)
private void putImageInStorage(final StorageReference storageReference, Uri
uri, final String key) {
storageReference.putFile(uri).addOnCompleteListener(
new OnCompleteListener<UploadTask.TaskSnapshot>() {
@Override
public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
if (task.isSuccessful()) {
FriendlyMessage friendlyMessage =
new FriendlyMessage(null, mUsername, mPhotoUrl,
task.getResult().getStorage().getDownloadUrl().toString() , mFirebaseUser.getUid());
mFirebaseDatabaseReference.child(MESSAGES_CHILD).child(key)
.setValue(friendlyMessage);
} else {
Log.w(TAG, "Image upload task was not successful.",
task.getException());
}
}
});
}
任何解决方案,特别是为绝对新手解释的解决方案,将不胜感激。感谢您抽出宝贵的时间阅读本文档以及任何帮助。