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にアップデートする前にうまく機能しました。別のモジュールのダウンロードタスクでも同じエラーが発生します。
これが私の状況をより良く視覚化するスクリーンショットです:
この問題は、熱心なリントチェックによって引き起こされているようです。次のようなものを試してください:
@SuppressWarnings("VisibleForTests") Uri downloadUrl = taskSnapshot.getDownloadUrl();
このトリックはうまくいきました。問題が このバグレポート に関連している場合は、2.4で修正する必要があります。
私は同じ問題で立ち往生し、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
}
});
}
});
これが誰かを助けることを願っています。
同じ問題が発生し、Firebaseのバージョンを更新すると消えました。 10.0.1を使用していましたが、現在11.0.0を使用しています