s3 TransferUtility Невозможно сохранить содержимое объекта на диск: xxxxxx (в доступе отказано)
В настоящее время я делаю приложение для Android, которое будет загружать файл json из s3 в мое приложение, но сейчас я столкнулся с очень странной ситуацией.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
это мой манифест
AWSMobileClient.getInstance().initialize(this).execute();
downloadWithTransferUtility();
private void downloadWithTransferUtility() {
String KEY = "HFKJHUWW";
String SECRET = "WDHUIWHDUIWHUI";
BasicAWSCredentials credentials = new BasicAWSCredentials(KEY, SECRET);
AmazonS3Client s3Client = new AmazonS3Client(credentials);
TransferUtility transferUtility =
TransferUtility.builder()
.context(getApplicationContext())
.awsConfiguration(AWSMobileClient.getInstance().getConfiguration())
.s3Client(s3Client)
.build();
String fileName = "movieDb.JSON";
// "private" will be the folder that contains the file
String location = "/storage/";
File localFile = new File(location + fileName);
//If File is not present create directory
if (!localFile.exists()) {
localFile.mkdir();
Log.e("localFile", "Directory Created.");
}
TransferObserver downloadObserver =
transferUtility.download("sgmovie-userfiles-mobilehub-2034921464","movieData/" + fileName, localFile);
// Attach a listener to the observer to get state update and progress notifications
downloadObserver.setTransferListener(new TransferListener() {
@Override
public void onStateChanged(int id, TransferState state) {
if (TransferState.COMPLETED == state) {
Log.e("Download", "Download successful.");
}
}
@Override
public void onProgressChanged(int id, long bytesCurrent, long bytesTotal) {
float percentDonef = ((float)bytesCurrent/(float)bytesTotal) * 100;
int percentDone = (int)percentDonef;
}
@Override
public void onError(int id, Exception ex) {
Log.e("Download fail", ex.getMessage());
}
});
}
Я получаю ошибку E/Download: Невозможно сохранить содержимое объекта на диск: /storage/movieDb.JSON (разрешение отклонено).
Я должен был попытаться спросить разрешение по подсказке
public static void verifyStoragePermissions(Activity activity) {
// Check if we have write permission
int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permission != PackageManager.PERMISSION_GRANTED) {
// We don't have permission so prompt the user
ActivityCompat.requestPermissions(
activity,
PERMISSIONS_STORAGE,
REQUEST_EXTERNAL_STORAGE
);
}
}
чувствуя себя безнадежно об этой проблеме, кто-нибудь может помочь? большое спасибо!! Кстати странная вещь, у меня была другая функция записи файла работает нормально, это из-за TransferUtility?