CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Android][Storage] Object does not exist at location

VivreUnEldorado
VivreUnEldorado
Niveau 45
13 mars 2019 à 20:51:50

Salut à tous !

Dans le cadre d'un projet, l'utilisateur peut ou non avoir un avatar. J'essaie de le récupérer. Mais du coup le fichier peut réellement ne pas exister.

Le code qui permet de récupérer l'image est le suivant.


    private void fillAvatarField() {
        UserStorage user_avatar_storage = new UserStorage();
        user_avatar_storage.getReferenceToAvatar(UserDatabaseModel.SIGNED_IN_USER_UID).getBytes(DownloadImageTask.MAX_DOWNLOAD_SIZE_BYTES).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                System.out.println(e.getMessage());
            }
        }).addOnSuccessListener(new OnSuccessListener<byte[]>() {
            @Override
            public void onSuccess(byte[] bytes) {
                image_view_edit_account_dialog_avatar.setImageBitmap(BitmapFactory.decodeByteArray(bytes, 0, bytes.length));
            }
        });
    }

Dans le cas où le fichier est trouvé, je n'ai rien à redire : c'est tout bon.
Dans le cas où le fichier n'est pas trouvé (car inexistant, l'utilisateur n'ayant pas encore choisi d'avatar), le `OnFailureListener` exécute bien sa méthode `OnFailure()`.

Où est le problème alors :question: => C'est juste qu'en plus de mon `sout(e.getMessage())` présent dans le `onFailure()`, une exception s'affiche également dans la console d'exécution. J'aimerais que ce ne soit pas le cas. Comment faire ?

Voici l'exception affichée dans mon terminal :

E/StorageException: StorageException has occurred.

Object does not exist at location.
Code: -13010 HttpResult: 404
E/StorageException: Could not open resulting stream.
java.io.IOException: Could not open resulting stream. [...]

Bunyan
Bunyan
Niveau 17
14 mars 2019 à 11:01:33

Y'a de bonnes chances que ce soit toi qui l'affiche dans ta méthode getReferenceToAvatar.
Dans l'absolu, ce n'est en rien important qu'elle s'affiche ou non.
Pour info, évite d'utiliser des System.out sur Android. Préfère les Log.[eivw]. De plus, Evite le exception.getMessage. Tu caches les infos pertinentes (à savoir la stacktrace) et c'est très peu utile.

VivreUnEldorado
VivreUnEldorado
Niveau 45
14 mars 2019 à 22:14:25

Le 14 mars 2019 à 11:01:33 Bunyan a écrit :
Y'a de bonnes chances que ce soit toi qui l'affiche dans ta méthode getReferenceToAvatar.
Dans l'absolu, ce n'est en rien important qu'elle s'affiche ou non.
Pour info, évite d'utiliser des System.out sur Android. Préfère les Log.[eivw]. De plus, Evite le exception.getMessage. Tu caches les infos pertinentes (à savoir la stacktrace) et c'est très peu utile.

Bonsoir Bunyan,

Non malheureusement.

public class UserStorage {
    public StorageReference getReferenceToAvatar(String user_id) {
        return FirebaseStorage.getInstance().getReference().child("avatars/" + user_id);
    }
}

C'est quoi `Log.[eivw]` ? Comment ça s'utilise ?

Bunyan
Bunyan
Niveau 17
15 mars 2019 à 00:31:53

https://developer.android.com/reference/android/util/Log

Bon, ben la 404 est générée directement par Firebase, donc à moins qu'il ne soit possible de lui dire "n'indique aucun log", tu ne pourras pas influer dessus.

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment