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