Obsługa błędów w Cloud Storage na Androidzie

Czasem wszystko nie działa zgodnie z planem i pojawia się błąd.

W razie wątpliwości sprawdź błąd zwrócony i treść komunikatu. Poniższy kod przedstawia niestandardową implementację modułu obsługi błędów, która sprawdza kod błędu i komunikat o błędzie zwrócone przez Cloud Storage. Taki błąd moduły obsługi można dodawać do różnych obiektów używanych w Cloud Storage API (na np. UploadTask i FileDownloadTask).

Kotlin+KTX

internal inner class MyFailureListener : OnFailureListener {
    override fun onFailure(exception: Exception) {
        val errorCode = (exception as StorageException).errorCode
        val errorMessage = exception.message
        // test the errorCode and errorMessage, and handle accordingly
    }
}

Java

class MyFailureListener implements OnFailureListener {
    @Override
    public void onFailure(@NonNull Exception exception) {
        int errorCode = ((StorageException) exception).getErrorCode();
        String errorMessage = exception.getMessage();
        // test the errorCode and errorMessage, and handle accordingly
    }
}

Jeśli widzisz komunikat o błędzie i masz reguły zabezpieczeń Cloud Storage, które zezwalają na ale nadal masz problem z jego naprawieniem, odwiedź stronę pomocy i poinformuj nas, jak możemy Ci pomóc.

Obsługa komunikatów o błędach

Błędy mogą być spowodowane wieloma przyczynami. Jednym z nich jest plik nie istnieje, użytkownik nie ma uprawnień dostępu do żądanego pliku lub Użytkownik anuluje przesyłanie pliku.

Aby prawidłowo zdiagnozować problem i rozwiązać go, podajemy tu pełną listę jakie błędy będzie zgłaszany przez klienta i jak mogą się one pojawić. Kody błędów w są zdefiniowane w klasie StorageException jako stałe całkowite.

Kod Przyczyna
ERROR_UNKNOWN Wystąpił nieznany błąd.
ERROR_OBJECT_NOT_FOUND W żądanym odwołaniu nie ma obiektu.
ERROR_BUCKET_NOT_FOUND Nie skonfigurowano zasobnika dla Cloud Storage
ERROR_PROJECT_NOT_FOUND Nie skonfigurowano projektu dla Cloud Storage
ERROR_QUOTA_EXCEEDED Limit zasobnika Cloud Storage został przekroczony. Jeśli korzystasz z abonamentu bezpłatnego, przejdź na abonament płatny. Jeśli masz płatny abonament, skontaktuj się z zespołem pomocy Firebase.
ERROR_NOT_AUTHENTICATED Użytkownik nie jest uwierzytelniony. Przeprowadź uwierzytelnianie i spróbuj ponownie.
ERROR_NOT_AUTHORIZED Użytkownik nie ma uprawnień do wykonania żądanego działania. Sprawdź, czy reguły są prawidłowe.
ERROR_RETRY_LIMIT_EXCEEDED Maksymalny limit czasu operacji (przesyłanie, pobieranie, usuwanie itp.) został przekroczony. Spróbuj ponownie.
ERROR_INVALID_CHECKSUM Plik w kliencie nie jest zgodny z sumą kontrolną pliku odebranego przez serwer. Spróbuj przesłać jeszcze raz.
ERROR_CANCELED Operacja anulowana przez użytkownika.

Dodatkowo próba wywołania getReferenceFromUrl() z nieprawidłowym adresem URL skutkuje odrzuceniem wyniku IllegalArgumentException. Argument dla funkcji powyższa metoda musi mieć format gs://bucket/object lub https://firebasestorage.googleapis.com/v0/b/bucket/o/object?token=<TOKEN>