私が書いているAndroidアプリケーションに問題があります。私たちはAmazon S3バケットにいくつかの写真を保存しています。アプリからアクセスしようとすると、TransferListenerのコールバックが呼び出されることはありません。Amazon S3 TransferListenerが呼び出されない
// S3Networker.java singleton
static final String AWS_COGNITO_POOL_ID = "OUR ID IS HERE";
static final String AWS_BUCKET_NAME = "OUR BUCKET NAME";
TransferUtility transferUtility = null;
private S3Networker instance;
private S3Networker() {
CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
Application.getContext(),
AWS_COGNITO_POOL_ID,
Regions.US_WEST_2
);
AmazonS3Client s3Client = new AmazonS3Client(credentialsProvider);
transferUtility = new TransferUtility(s3Client,Application.getContext());
}
public getInstance() {
if(instance == null) {
instance = new S3Networker();
}
return instance;
}
// ...
// Some class methods that don't touch S3
// ...
// S3 Download Method
public void S3PhotoFetch() {
final String objectKey = "path/to/item.jpg";
final File fileDownload = new File(Application.getContext().getCacheDir(), objectKey);
TransferObserver transferObserver = transferUtility.download(
AWS_PHOTO_BUCKET_NAME,
objectKey,
fileDownload);
transferObserver.setTransferListener(new TransferListener(){
@Override
public void onStateChanged(int id, TransferState state) {
Log.d(TAG, "onStateChanged: " + state);
if (TransferState.COMPLETED.equals(state)) {
Log.d(TAG, "Download finished");
}
}
@Override
public void onProgressChanged(int id, long bytesCurrent, long bytesTotal) { }
@Override
public void onError(int id, Exception ex) {
Log.e(TAG, "onError: ", ex);
}
});
}
ファイルは正常に動作し、何もクラッシュしません。ただし、アプリケーションはTransferListenerのonStateChanged関数またはonError関数を決して呼び出していないため、S3からデータを受け取ることはありません。誰かがなぜ、どのようにそれを修正するために説明することができますか?
ありがとうございました!
...これはあなたを助けることを願っています
、以下のようにダウンロードするのutilを呼び出して試してみました - アンドロイド - サンプル? このサンプルは、あなたが達成しようとしていることを実行しています –
私は上記のものを含むいくつかのサンプルアプリケーションを使用しました。私が抱えている問題は、コールバック関数onStateChanged()、onProgressChanged()、およびonError()が、この特定のアプリケーションで呼び出されていないことです。 – ellman121
AndroidManifest.xmlを投稿して、タグやないで 『真/>それは –
Ravi