diff --git a/app/build.gradle b/app/build.gradle
index c69bf37..8c41653 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -9,7 +9,7 @@ android {
applicationId "asgardius.page.s3manager"
minSdk 23
targetSdk 33
- versionCode 56
+ versionCode 57
versionName "0.6.0"
setProperty("archivesBaseName", "s3-manager-$versionName")
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fa500ad..a8e59e1 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -52,8 +52,7 @@
+ android:exported="false" />
+ android:exported="false" />
fileindex = new ArrayList();
fileindex.add(0);
- for (int i = 0; i < filelist.length; i++) {
+ for (int i = 0; i < filelist.length && !cancel; i++) {
filepath.add(filelist[i].getName());
if(filelist[i].isDirectory()) {
treelevel++;
fileindex.add(0);
document = filelist[i];
filelist = document.listFiles();
- while (treelevel >= 1 && fileindex.get(treelevel) < filelist.length+1) {
+ while (treelevel >= 1 && fileindex.get(treelevel) < filelist.length+1 && !cancel) {
if(fileindex.get(treelevel) == filelist.length) {
fileindex.remove(treelevel);
document = document.getParentFile();
@@ -214,9 +222,13 @@ public class Uploader extends AppCompatActivity {
mWakeLock.release();
//System.out.println("WakeLock released");
}
- simpleProgressBar.setProgress(100);
+ if(!cancel) {
+ simpleProgressBar.setProgress(100);
+ }
//simpleProgressBar.setVisibility(View.INVISIBLE);
- if (isfolder) {
+ if (cancel) {
+ fileUpload.setText(getResources().getString(R.string.upload_canceled));
+ } else if (isfolder) {
fileUpload.setText(getResources().getString(R.string.batch_upload_success));
} else {
fileUpload.setText(getResources().getString(R.string.upload_success));
@@ -431,32 +443,40 @@ public class Uploader extends AppCompatActivity {
// Upload the file parts.
long fileOffset = 0;
- for (int partNumber = 1; fileOffset < contentLength; ++partNumber) {
- // Because the last part could be less than 5 MB, adjust the part size as needed.
- partSize = Math.min(partSize, (contentLength - fileOffset));
+ try{
+ for (int partNumber = 1; fileOffset < contentLength && !cancel; ++partNumber) {
+ // Because the last part could be less than 5 MB, adjust the part size as needed.
+ partSize = Math.min(partSize, (contentLength - fileOffset));
- // Create the request to upload a part.
- UploadPartRequest uploadRequest = new UploadPartRequest()
- .withBucketName(bucket)
- .withKey(objectKey)
- .withUploadId(initResponse.getUploadId())
- .withPartNumber(partNumber)
- .withFileOffset(fileOffset)
- .withFile(file)
- .withPartSize(partSize);
+ // Create the request to upload a part.
+ UploadPartRequest uploadRequest = new UploadPartRequest()
+ .withBucketName(bucket)
+ .withKey(objectKey)
+ .withUploadId(initResponse.getUploadId())
+ .withPartNumber(partNumber)
+ .withFileOffset(fileOffset)
+ .withFile(file)
+ .withPartSize(partSize);
- // Upload the part and add the response's ETag to our list.
- UploadPartResult uploadResult = s3client.uploadPart(uploadRequest);
- //LOGGER.info("Uploading part {} of Object s3://{}/{}", partNumber, bucket, objectKey);
- partETags.add(uploadResult.getPartETag());
+ // Upload the part and add the response's ETag to our list.
+ UploadPartResult uploadResult = s3client.uploadPart(uploadRequest);
+ //LOGGER.info("Uploading part {} of Object s3://{}/{}", partNumber, bucket, objectKey);
+ partETags.add(uploadResult.getPartETag());
- fileOffset += partSize;
- transfered++;
+ fileOffset += partSize;
+ transfered++;
+ }
+
+ // Complete the multipart upload.
+ CompleteMultipartUploadRequest compRequest = new CompleteMultipartUploadRequest(bucket, objectKey, initResponse.getUploadId(), partETags);
+ s3client.completeMultipartUpload(compRequest);
+ } catch (AbortedException | AmazonS3Exception e) {
+ e.printStackTrace();
+ AbortMultipartUploadRequest abort = new AbortMultipartUploadRequest(bucket, objectKey, initResponse.getUploadId());
+ s3client.abortMultipartUpload(abort);
+ //Toast.makeText(getApplicationContext(),getResources().getString(R.string.media_list_fail), Toast.LENGTH_SHORT).show();
+ //finish();
}
-
- // Complete the multipart upload.
- CompleteMultipartUploadRequest compRequest = new CompleteMultipartUploadRequest(bucket, objectKey, initResponse.getUploadId(), partETags);
- s3client.completeMultipartUpload(compRequest);
}
private void calculateSize() {
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 302ec5e..aeac116 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -11,6 +11,7 @@
Se requiere un nombre para el bucket
Compartir archivo
Descargar archivo
+ Descargar archivos
Cancelar descarga
Archivo descargado exitosamente
Subir archivo en este bucket
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 5995c05..c6e9a6d 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -24,6 +24,7 @@
Share file
Open in
Download file
+ Download files
Download bucket content
Download folder content
Cancel download
diff --git a/fastlane/metadata/android/en-US/changelogs/56.txt b/fastlane/metadata/android/en-US/changelogs/57.txt
similarity index 100%
rename from fastlane/metadata/android/en-US/changelogs/56.txt
rename to fastlane/metadata/android/en-US/changelogs/57.txt