J'essaie d'extraire une image que j'ai ajoutée à mon stockage firebase sur un périphérique Android. Chaque fois que cela fonctionne, j'obtiens cette erreur de la onFailureListener()
E/StorageException (9646): Une erreur inconnue s'est produite. Veuillez vérifier le code de résultat HTTP et l'exception interne pour la réponse du serveur . E/StorageException (9646): Code: -13000 HttpResult: 0
J'ai également modifié les autorisations sur le stockage pour que les opérations de lecture/écriture se fassent pour que le problème ne se pose pas.
final ImageView test = (ImageView) findViewById(R.id.test_image);
StorageReference ref = storage.getReferenceFromUrl("gs://my-project.appspot.com/test_image.png");
ref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Log.d(TAG, "Successfully loaded uri");
test.setImageURI(uri);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d(TAG, "Failed loaded uri: " + e.getMessage());
}
});
Je viens de remarquer que le résultat http est zéro. Cela suggère que la demande d'obtention de l'URL de téléchargement n'a jamais été faite. Cela peut arriver si les services de jeu ne sont pas mis à jour sur votre téléphone. Vous saurez que c’est l’erreur car adb logcat affichera une erreur indiquant «La couche réseau de stockage ne peut pas être chargée».
Pour résoudre ce problème, mettez à jour les services de lecture sur votre téléphone. Il y a plusieurs façons de le faire. Je trouve que le plus simple est d'installer l'application "Play Services Info" pour voir les services de lecture dans le Play Store, puis d'appuyer sur update si celui-ci est disponible.
Mettez à jour les services Google Play sur votre appareil , pas dans votre script Gradle (faites-le également).
Après avoir tapé ma tête contre le mur pendant environ une heure pour ne lire que la réponse de benjamin-wulfe ainsi que d'autres sur Internet, je suis revenu et l'ai lue attentivement. J'espère que cela aidera les autres à éviter mon erreur!
Pour éviter cela, vous devez disposer de services Google Play à jour.
Activez également l'authentification anonyme dans la console Firebase.
Dans mon cas, je créais StorageRef à partir de URL de téléchargement pas avec le Emplacement de stockage .
String storageLocation="gs://bbeplayer.appspot.com/heart.png";
String downloadURL="https://firebasestorage.googleapis.com/v0/b/bbeplayer.appspot.com/o/heart.png?alt=media&token=41a22961-daf1-433e-a580-e65144d34ab3";
StorageReference reference;
reference=FirebaseStorage.getInstance().getReferenceFromUrl(downloadURL);
Alors j'ai changé reference=FirebaseStorage.getInstance().getReferenceFromUrl(downloadURL);
à
reference=FirebaseStorage.getInstance().getReferenceFromUrl(storageLocation);
J'ai eu le même problème lors de l'utilisation de l'exemple de stockage Démarrage rapide Firebase. Le problème était que l'application ne demandait pas d'autorisations d'exécution pour le stockage sur Android M.
Alors, essayez de vérifier les autorisations de stockage.