web-dev-qa-db-ja.com

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はその線に赤で下線を引き、次のように言います。

このメソッドは、テストまたはプライベートスコープ内からのみアクセスする必要があります

誰かがこれが起こっている理由を説明できますか?私は今まで2日間ずっと研究を続けてきましたが、私の人生でこれを理解することはできません(恥ずかしい)。

価値のあることは、このコードを使用してファイルをFirebase Storageにアップロードし、ファイルが完了すると(OnSuccess)、ダウンロードURLを取得してFirebaseデータベースに保存します。これは、10.1にアップデートする前にうまく機能しました。別のモジュールのダウンロードタスクでも同じエラーが発生します。

これが私の状況をより良く視覚化するスクリーンショットです:

enter image description here

46
Ryan

この問題は、熱心なリントチェックによって引き起こされているようです。次のようなものを試してください:

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

このトリックはうまくいきました。問題が このバグレポート に関連している場合は、2.4で修正する必要があります。

63

私は同じ問題で立ち往生し、suppressWarningsは私のために機能しませんでした。完全なダウンロードを取得するために、Uri iは次のコードを使用しました。

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

これが誰かを助けることを願っています。

4

同じ問題が発生し、Firebaseのバージョンを更新すると消えました。 10.0.1を使用していましたが、現在11.0.0を使用しています

0
Mazen Ebeid