android - हाल के संस्करणों में getdownloadurl का उपयोग कैसे करें?




firebase firebase-realtime-database (2)

यह मेरे लिए शोध और विभिन्न तरीकों के घंटों के बाद काम किया:

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);
                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 का उपयोग करने में असमर्थ था। मैंने पहले से ही फायरबेस स्टोरेज में इमेज को स्टोर कर रखा है। क्या यह वह टुकड़ा है जो गेटडाउटरल के उपयोग को प्रतिबंधित कर रहा है? मेरा मकसद फायरबेस में स्टोर करने के लिए एक क्वेरी करना है। कृपया मेरी मदद करें।


taskSnapshot.getDownloadUrl() स्टोरेज एसडीके के हाल के संस्करणों में 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>() {

और देखें:







firebase-storage