2016-05-21 13 views
6

Próbuję uzyskać identyfikator URI obrazu, który jest przechowywany w magazynie Firebase, w celu przetworzenia go przy użyciu innej metody. Używam następujący:Nie można pobrać identyfikatora URI z odwołania do pamięci w Firebase

FirebaseStorage storage = FirebaseStorage.getInstance(); 
    StorageReference storageRef = storage.getReferenceFromUrl(this.getString(R.string.storage_path)); 
    Uri uri = storageRef.child("groups/pizza.png").getDownloadUrl().getResult(); 

i otrzymuję błąd „java.lang.IllegalStateException: Zadanie nie jest jeszcze zakończona”

Odpowiedz

9

Można uzyskać adres URL pobierania pliku z:

storageRef.child("groups/pizza.png").getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() { 
    @Override 
    public void onSuccess(Uri uri) { 
     // TODO: handle uri 
    } 
}).addOnFailureListener(new OnFailureListener() { 
    @Override 
    public void onFailure(@NonNull Exception exception) { 
     // Handle any errors 
    } 
}); 

Zobacz Firebase documentation for downloading data via a URL.

+0

Dziękuję za szybką odpowiedź, Tak naprawdę próbowałem, ale otrzymywanie błędu w "OnFailureListener" - Klasa "Anonimowa klasa pochodna od OnFailureListener" musi być zadeklarowana jako abstrakcyjna lub zaimplementowana abstrakcyjna metoda 'onFailure (Exception' w 'OnFailureListener ' Jestem całkiem nowy w Firebase i ogólnie w kodowaniu i chciałbym wiedzieć, czego mi brakuje. – bbenis

+0

Zamiast "Throwble throwable", powinno to brzmieć "Exception exception" jako argument dla onFailure. –

+0

Powodem, dla którego otrzymałeś oryginalny wyjątek jest to, że metoda jest asynchroniczna i powinna być nazwana tak jak Frank. –

Powiązane problemy