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?

0 ответов

Другие вопросы по тегам