working tutorial tasksnapshot studio realtime not getresult getdownloadurl firestore error downloadurl android firebase firebase-realtime-database firebase-storage

android - tutorial - ¿Cómo usar getdownloadurl en versiones recientes?



task getresult() getdownloadurl() (3)

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

No he podido utilizar getdownloadurl. Ya he almacenado la imagen en el almacenamiento de base de firebase. ¿Es el fragmento el que restringe el uso de getdownloadurl? Mi motivo es hacer una consulta para almacenar en firebase. Por favor, ayúdame.


El método taskSnapshot.getDownloadUrl() se eliminó en versiones recientes del SDK de almacenamiento de Firebase. En su lugar, deberá obtener la URL de descarga de la StorageReference ahora.

Llamar a StorageReference.getDownloadUrl() devuelve una Task , ya que necesita recuperar la URL de descarga del servidor. Así que necesitarás un oyente de finalización para obtener la URL real.

De la documentación sobre la descarga de un archivo :

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 } });

Alternativamente, esa primera línea podría ser esto en tu caso:

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

Ver también:


Esto me funcionó después de horas de investigación y diferentes maneras:

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);


storageReference.child("YOUR_CHILD") .putFile("FILE") .addOnSuccessListener(new OnSuccessListener() { @Override public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { taskSnapshot .getStorage() .getDownloadUrl() .addOnSuccessListener(new OnSuccessListener() { @Override public void onSuccess(Uri uri) { //Put your result here } }); }