Wie kann ich die Zugriffssteuerungsliste für ein Objekt festlegen, während ich es auf Amazon S3 hochlade?

Ich kann Bilder von Android auf Amazon S3 hochladen. Aber sie sind immer privat, niemand kann sie anzeigen. Ich muss es auf Amazon S3 Management Console veröffentlichen. Ich kann keine Zugriffssteuerungsliste für ein Bild festlegen, während ich es hochlade.

Ich habe gelernt, dass es zwei Möglichkeiten gibt, Bilder von Android auf Amazon S3 hochzuladen:

using PutObjectRequest using TransferUtility.upload ()

Ich habe beide ausprobiert. Wenn ich PutObjectRequest bevorzuge, muss ich AsyncTask oder einen anderen Thread verwenden. Weil PutObjectRequest auf dem Hauptthread ausgeführt wird. Aber ich möchte nicht AsyncTask oder einen anderen Thread verwenden.

Ich möchte TransferUtility verwenden, da es nicht auf dem Hauptthread ausgeführt wird und auf dem Dienst funktioniert. Daher muss ich nicht AsyncTask oder einen anderen Thread verwenden. Auch ich kann Fortschritt und Zustand der Übertragung leicht aufspüren. Darüber hinaus ist TransferUtility neuer als PubObjectRequest. Aber das Problem kommt hier: Ich weiß nicht, wie man ACL für ein Objekt während oder vor dem Hochladen auf S3 einstellt. Ich habe es versucht:

s3Client.setObjectAcl("myBucket", "steve_jobs.jpg", CannedAccessControlList.PublicRead);

aber es wurde der Fehler "network on main thread" zurückgegeben. Also muss ich AsyncTask oder einen anderen Thread verwenden. Aber ich möchte nicht AsyncTask oder einen anderen Thread verwenden. Wie kann ich die Zugriffssteuerungsliste für ein Objekt festlegen, während ich es mit TransferUtility hochlade?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage