web-dev-qa-db-fra.com

Android - Firebase - TaskSnapshot - La méthode ne devrait être accessible que dans une étendue privée?)

Tout fonctionnait très bien ... jusqu'à ce que je revienne au travail après une pause de 3 mois et que je mette à jour mon Firebase de 9,8 à 10.0.1.

Maintenant, tous mes appels à TaskSnapshot me donnent une erreur.

Voici l'exemple de code qui fonctionnait bien auparavant:

OnSuccessListener<UploadTask.TaskSnapshot> successListener = new OnSuccessListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
        attachments.add(fileName + "*-*" + taskSnapshot.getDownloadUrl().toString());

        numberOfCallbacks++;
        if (numberOfFiles == numberOfCallbacks) {
            currentUpload = false;
            onClickSendAlert(sendingView);
        }
    }
};

L'erreur que je reçois maintenant concerne taskSnapshot.getDownloadUrl().

Android Studio souligne cette ligne en rouge et dit:

Cette méthode ne doit être accessible qu'à partir de tests ou dans le cadre privé

Quelqu'un peut-il expliquer pourquoi cela se produit? Je fais des recherches toute la journée depuis deux jours maintenant et je ne peux pas le comprendre pendant toute ma vie (embarrassant).

Pour ce que cela vaut, ce code est utilisé pour télécharger un fichier sur Firebase Storage, puis une fois terminé (OnSuccess), il récupère l'URL de téléchargement et le stocke dans la base de données Firebase. Cela fonctionnait très bien avant que je mette à jour à 10.0.1. Je reçois la même erreur sur mes tâches de téléchargement dans un autre module.

Voici une capture d'écran pour vous donner un meilleur visuel de ma situation:

enter image description here

46
Ryan

Le problème semble être causé par une vérification exagérée de Lint. Essayez quelque chose comme ça:

@SuppressWarnings("VisibleForTests") Uri downloadUrl = taskSnapshot.getDownloadUrl();

Cette astuce a fonctionné pour moi. Si le problème est lié à ce rapport de bogue , il devrait être corrigé dans la version 2.4.

63

J'étais coincé dans le même problème et suppressWarnings ne fonctionnait pas pour moi. Pour obtenir le téléchargement complet, Uri a utilisé le code suivant:

ref.putFile(imagePath).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
            ref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                @Override
                public void onSuccess(Uri uri) {
                     Log.d("URL", uri.toString());
                    // This is the complete uri, you can store it to realtime database
                }
            });
        }
    });

J'espère que ça aide quelqu'un.

4
Shivam Pokhriyal

J'ai eu le même problème et il était parti quand j'ai mis à jour ma version de Firebase. J'utilisais 10.0.1 et maintenant j'utilise 11.0.0

0
Mazen Ebeid