私のコードは次のようになります。
final AmazonS3Client s3Client = new AmazonS3Client(new BasicAWSCredentials(s3AccessKeyId, s3SecretAccessKey));
final TransferUtility util = TransferUtility.
builder().s3Client(s3Client).context(context).build();
「com.amazonaws:aws-android-sdk-s3:2.7.5」から「com.amazonaws:aws-android-sdk-s3:2.11.0」にアップグレードすると、logcat に次のエラーが表示されます。アップロードはまだ機能しています:
E/nsferNetworkLossHandler: TransferNetworkLossHandler is not created. Please call `TransferNetworkLossHandler.getInstance(Context)` to instantiate it before retrieving
E/UploadTask: TransferUtilityException: [com.amazonaws.mobileconnectors.s3.transferutility.TransferUtilityException: TransferNetworkLossHandler is not created. Please call `TransferNetworkLossHandler.getInstance(Context)` to instantiate it before retrieving]
コードを変更して TransferNetworkLossHandler を含めると、次のようになります。
TransferNetworkLossHandler.getInstance(context);
final AmazonS3Client s3Client = new AmazonS3Client(new BasicAWSCredentials(s3AccessKeyId, s3SecretAccessKey));
final TransferUtility util = TransferUtility.
builder().s3Client(s3Client).context(context).build();
何もしなくても、エラーは発生しません。
ただし、これはこのエラー メッセージが意図したものではありません。TransferNetworkLossHandler を使用するように指示されていますが、使用方法に関するドキュメントはありません。
アップロードが機能しなかった場合に、ユーザーにエラー (Toast や AlertDialog など) を表示したいだけです。したがって、ハンドラーはまったく必要ありません。しかし、エラー メッセージが毎回ログに書き込まれることも望ましくありません。また、インスタンスを取得するだけで何もしないというこのハックなソリューションは使用したくありません。
私の場合、このハンドラーの適切な使用法は何ですか?