我想从Firebase的uploadTask.addOnProgressListener
方法获得“下载网址”。如何使用以下代码获取下载网址?
UploadTask uploadTask = storageRef.putBytes(data);
uploadTask.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>()
{
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot)
{
Log.d("aaaaasessin",""+taskSnapshot.getTask().getResult());
}
});
我使用了taskSnapshot.getTask().getResult()
,但是没有用。
答案 0 :(得分:3)
要获取下载网址,您需要使用addOnSuccessListener
,如以下代码行所示:
uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
storageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
String url = uri.toString();
//Do what you need to do with url
}
});
}
});
正如Firebase release notes在2018年5月23日所提到的那样:
云存储版本16.0.1
删除了不推荐使用的StorageMetadata.getDownloadUrl()和UploadTask.TaskSnapshot.getDownloadUrl()方法。要获取当前的下载URL,请使用StorageReference.getDownloadUr()。
现在,当在getDownloadUrl()对象上调用StorageReference时,它将返回一个Task
对象,并且不再一个Uri对象了。
也请记住,如果您的设备无法访问Firebase Storage后端,则不会调用成功侦听器或失败侦听器(如果您打算使用它)。仅在数据提交到Firebase服务器或被Firebase服务器拒绝后,才会调用成功/失败侦听器。