android - 如何在最近的版本中使用getdownloadurl?




firebase firebase-realtime-database (2)

                Uri downloaduri=taskSnapshot.getDownloadUrl();//here i cant use getdownloadurl() function
                DatabaseReference new_prod=db.push();
                new_prod.child("product name").setValue(prod_name);
                new_prod.child("product price").setValue(prod_price);
                new_prod.child("available stock").setValue(prod_quan);
                new_prod.child("product image").setValue(downloaduri);
                pd.dismiss();//fragments code

我無法使用getdownloadurl。我已經將圖像存儲在firebase存儲中。它是否限制了使用getdownloadurl的片段? 我的動機是查詢存儲在firebase中。請幫助我。


最新版本的Firebase Storage SDK中刪除了 taskSnapshot.getDownloadUrl() 方法。 您現在需要從 StorageReference 獲取下載URL。

調用 StorageReference.getDownloadUrl() 返回一個 Task ,因為它需要從服務器檢索下載URL。 因此,您需要一個完成偵聽器來獲取實際的URL。

下載文件 文檔

 storageRef.child("users/me/profile.png").getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
    @Override
    public void onSuccess(Uri uri) {
        // Got the download URL for 'users/me/profile.png' in uri
        System.out.println(uri.toString());
    }
}).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {
        // Handle any errors
    }
});

或者,第一行可以是你的情況:

taskSnapshot.getStorage().getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {

另見:


經過數小時的研究和不同的方式,這對我有用:

filepath.putFile(resultUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
     @Override
     public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

           //here
           Task<Uri> urlTask = taskSnapshot.getStorage().getDownloadUrl();
           while (!urlTask.isSuccessful());
           Uri downloadUrl = urlTask.getResult();

           final String sdownload_url = String.valueOf(downloadUrl);






firebase-storage