如何在Android firebase存储中获取上次上传图像的路径?
我已经学会了如何从图库中选择图像,如何将其上载到firebase存储,以及如何在ActivityResult中显示它,一切都很好。我的问题是,当我重新启动活动时,映像消失了。这是我的代码:如何在Android firebase存储中获取上次上传图像的路径?,android,firebase,firebase-storage,Android,Firebase,Firebase Storage,我已经学会了如何从图库中选择图像,如何将其上载到firebase存储,以及如何在ActivityResult中显示它,一切都很好。我的问题是,当我重新启动活动时,映像消失了。这是我的代码: @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); i
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_PHOTO && resultCode == RESULT_OK) {
Uri uri = data.getData();
StorageReference photoStorageReference = storageReference.child("Photos").child(uri.getLastPathSegment());
String path = storageReference.getPath(); //get the path of the last uploaded image
photoStorageReference.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Uri downloadUri = taskSnapshot.getDownloadUrl();
Picasso.with(StorageActivity.this).load(downloadUri).fit().centerCrop().into(imageView);
}
});
}
}
工作非常完美,但是当我从onCreate
调用该方法时,使用路径而不是“Photos/46”
如下所示:
private void displayLastImage() {
StorageReference newStorageReference = storageReference.child("Photos/car.jpg");
Glide.with(this).using(new FirebaseImageLoader()).load(newStorageReference).into(imageView);
}
private void displayLastImage() {
StorageReference newStorageReference = storageReference.child(path);
Glide.with(this).using(new FirebaseImageLoader()).load(newStorageReference).into(imageView);
}
我收到以下错误:java.lang.IllegalArgumentException:childName不能为null或空
。如何获取上次上传图像的路径
,以便正确显示
提前谢谢 上载图像时,将其存储在基于用户从库中选择的图像的路径上
String path = storageReference.getPath();
重新启动“活动”时,该路径尚未初始化,因此您试图在未知路径中查找映像
这意味着您需要“记住”活动调用之间的路径。您可以将其存储在应用程序的共享首选项中。这些是在活动之间持久化的
更常见的是将映像路径(或其下载URL)存储在云存储中,如Firebase数据库。您可以在中看到一个例子。我已将图像路径存储在Firebase数据库中,现在可以正确检索它。工作完美!非常感谢你,弗兰克!