Подтвердить что ты не робот

Android - Firebase - TaskSnapshot - Доступ к методу должен выполняться только в закрытом режиме?

Все отлично работало... пока я не вернулся на работу с 3-месячного перерыва и обновил свою Firebase с 9.8 до 10.0.1

Теперь все мои вызовы TaskSnapshot дают мне ошибку.

Вот пример кода, который работал отлично:

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);
        }
    }
};

Ошибка, которую я сейчас получаю, касается taskSnapshot.getDownloadUrl().

Android Studio подчеркивает эту строку красным цветом и говорит:

Этот метод должен быть доступен только из тестов или в частной области

Может кто-нибудь объяснить, почему это происходит? Я работаю целый день в течение двух дней прямо сейчас и не могу, чтобы жизнь меня показала это (неловко).

Для чего этот код используется для загрузки файла в хранилище Firebase, а затем, когда он завершен (OnSuccess), он получает URL-адрес загрузки и сохраняет его в базе данных Firebase. Это отлично работало, прежде чем я обновился до 10.0.1. Я получаю ту же ошибку в моих задачах загрузки в другом модуле.

Вот скриншот, который поможет вам лучше понять мою ситуацию:

введите описание изображения здесь

4b9b3361

Ответ 1

Проблема, по-видимому, вызвана чрезмерной проверкой Lint. Попробуйте что-то вроде этого:

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

Этот трюк работал у меня. Если проблема связана с этот отчет об ошибках, то это должно быть исправлено в 2.4.

Ответ 2

Я застрял в одной и той же проблеме, и подавляющее действие не помогло мне. Для получения полной загрузки Uri я использовал следующий код:

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
                }
            });
        }
    });

Надеюсь, это поможет кому-то.

Ответ 3

У меня была такая же проблема, и она исчезла, когда я обновил версию Firebase. Я использовал 10.0.1, и теперь я использую 11.0.0