47 votes

Android - Firebase - TaskSnapshot - Méthode ne doit être accessible à portée privée?

Tout fonctionnait très bien... jusqu'à ce que je suis venu travailler à partir de 3 mois de pause et de mettre à jour mon Firebase de 9,8 à 10.0.1

Maintenant, tous mes appels à l' TaskSnapshot donnez moi une erreur.

Voici l'exemple de code qui fonctionnait bien avant:

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 est quant à taskSnapshot.getDownloadUrl().

Android Studio souligne le fait que la ligne en rouge et dit:

Cette méthode ne doit être accessible à partir de tests ou à l'intérieur portée privée

Quelqu'un peut m'expliquer pourquoi ce qui se passe? J'ai fait des recherches toute la journée pour deux jours de suite maintenant et ne peux pas pour la vie de me comprendre (embarrassante).

Pour ce que ça vaut, ce code est utilisé pour télécharger un fichier de Firebase de Stockage, puis, quand il est complet (OnSuccess), il obtient l'URL de téléchargement et le stocke dans la Firebase Base de données. Cela fonctionnait très bien avant que j'ai mis à jour à 10.0.1. Je reçois la même erreur sur mon 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

64voto

Rapunzel Van Winkle Points 3124

Le problème semble être causé par un excès de zèle des Peluches vérifier. Essayez quelque chose comme ceci:

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

Cette astuce a fonctionné pour moi. Si le problème est lié à ce rapport de bug, alors il doit être fixé dans 2.4.

6voto

Shivam Pokhriyal Points 448

J'ai été coincé dans le même numéro, et suppressWarnings ne fonctionne pas pour moi. Pour obtenir le téléchargement complet Uri j'ai 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
                }
            });
        }
    });

Espérons que cela aide quelqu'un.

0voto

Mazen Ebeid Points 1

J'ai eu le même problème et il a disparu quand j'ai mis à jour mon Firebase version. J'ai été en utilisant 10.0.1, et maintenant je suis en utilisant 11.0.0

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X