java - ¿Cómo obtener la url de descarga desde Firebase Storage?
android firebase-storage (1)
Quiero obtener la URL de descarga desde el método
uploadTask.addOnProgressListener
de Firebase.
¿Cómo puedo obtener la URL de descarga usando el siguiente código?
UploadTask uploadTask = storageRef.putBytes(data);
uploadTask.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>()
{
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot)
{
Log.d("aaaaasessin",""+taskSnapshot.getTask().getResult());
}
});
Utilicé
taskSnapshot.getTask().getResult()
pero eso no está funcionando.
Para obtener la url de descarga, necesita usar
addOnSuccessListener
, como en las siguientes líneas de código:
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
}
});
}
});
Como en las notas de lanzamiento de Firebase del 23 de mayo de 2018, se menciona que:
Cloud Storage versión 16.0.1
Se eliminaron los métodos StorageMetadata.getDownloadUrl () y UploadTask.TaskSnapshot.getDownloadUrl () en desuso. Para obtener una URL de descarga actual, use StorageReference.getDownloadUr ().
Así que ahora, al llamar a
getDownloadUrl()
en un objeto
StorageReference
, devuelve un objeto
Task
y ya
no
un objeto Uri.
Además, recuerde que no se llamará al oyente de éxito ni al que escucha la falla (si tiene intención de usarlo) si su dispositivo no puede acceder al servidor de Firebase Storage. Los escuchas de éxito / fracaso solo serán llamados una vez que los datos sean confirmados o rechazados por los servidores Firebase.