Ich habe ein Problem mit einer Android-Anwendung, die ich schreibe. Wir speichern einige Fotos in unserem Amazon S3-Bucket, und wenn ich versuche, über die App darauf zuzugreifen, werden die Callbacks in meinem TransferListener nie aufgerufen.Amazon S3 TransferListener wird nie aufgerufen
// 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);
}
});
}
Die Datei läuft gut, nichts stürzt ab. Die Anwendung ruft jedoch niemals die Funktionen onStateChanged oder onError im TransferListener auf und ich erhalte meine Daten nie von S3. Kann jemand erklären warum und wie man es repariert?
Vielen Dank!
haben Sie versucht, die S3 TransferUtility Probe mit auf https://github.com/awslabs/aws-sdk -android-Proben? Dieses Beispiel macht, was Sie versuchen zu erreichen –
Ich habe ein paar Beispiel-Apps verwendet, einschließlich der oben genannten. Das Problem, das ich habe, ist, dass die Callback-Funktionen onStateChanged(), onProgressChanged() und onError() nicht in dieser bestimmten Anwendung aufgerufen werden, obwohl sie in anderen Anwendungen sind. – ellman121
Können Sie Ihre AndroidManifest.xml veröffentlichen und überprüfen, ob Sie es in -Tag oder nicht –
Ravi