itsource

Android - Firebase - TaskSnapshot - Method는 개인 범위 내에서만 액세스해야 합니까?

mycopycode 2023. 6. 21. 22:35
반응형

Android - Firebase - TaskSnapshot - Method는 개인 범위 내에서만 액세스해야 합니까?

모든 것이 잘 되어가고 있었습니다...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 Storage에 업로드한 다음 파일이 완료되면 사용됩니다.OnSuccess), 다운로드 URL을 가져와 Firebase 데이터베이스에 저장합니다.이것은 제가 10.0.1로 업데이트하기 전에 잘 작동했습니다.다른 모듈의 다운로드 작업에서도 동일한 오류가 발생합니다.

다음은 제 상황을 더 잘 볼 수 있는 스크린샷입니다.

enter image description here

이 문제는 린트 체크가 지나치게 열성적이어서 발생한 것으로 보입니다.다음과 같은 방법을 사용해 보십시오.

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

이 속임수는 저에게 효과가 있었습니다.버그 보고서와 관련된 문제라면 2.4에서 수정해야 합니다.

저는 같은 문제에 갇혀 있었고 경고가 저에게 효과가 없었다는 것을 억제했습니다.전체 다운로드를 위해 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
                }
            });
        }
    });

이것이 누군가에게 도움이 되기를 바랍니다.

저도 같은 문제가 있었는데 Firebase 버전을 업데이트했을 때 문제가 사라졌습니다.10.0.1을 사용하다가 11.0.0을 사용합니다.

사용하다

@VisibleForTesting
internal val something

또는

@VisibleForTesting
internal fun foo()

언급URL : https://stackoverflow.com/questions/41105586/android-firebase-tasksnapshot-method-should-only-be-accessed-within-privat

반응형