diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 959ff820..07d345b4 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -5,7 +5,6 @@
-
= 23) {
- if(checkPermission()) {
- requestFileDownload();
- }
- else {
- requestPermission();
- }
- }
- else {
- requestFileDownload();
- }
- break;
+ requestFileDownload();
}
@@ -330,24 +315,17 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie
if(!tinyDb.getString("downloadFileContents").isEmpty()) {
+ int CREATE_REQUEST_CODE = 40;
+
File outputFileName = new File(tinyDb.getString("downloadFileName"));
- final File downloadFilePath = new File(Environment.getExternalStorageDirectory().getPath() + "/Download/" + outputFileName.getName());
- byte[] pdfAsBytes = Base64.decode(tinyDb.getString("downloadFileContents"), 0);
- FileOutputStream fileOutputStream = null;
+ Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
- try {
+ intent.addCategory(Intent.CATEGORY_OPENABLE);
+ intent.setType("*/*");
+ intent.putExtra(Intent.EXTRA_TITLE, outputFileName.getName());
- fileOutputStream = new FileOutputStream(downloadFilePath, false);
- Objects.requireNonNull(fileOutputStream).write(pdfAsBytes);
- fileOutputStream.flush();
- fileOutputStream.close();
- Toasty.info(ctx, getString(R.string.downloadFileSaved));
-
- }
- catch(IOException e) {
- Log.e("errorFileDownloading", Objects.requireNonNull(e.getMessage()));
- }
+ startActivityForResult(intent, CREATE_REQUEST_CODE);
}
else {
@@ -356,42 +334,47 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie
}
- private boolean checkPermission() {
-
- int result = ContextCompat.checkSelfPermission(this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE);
- return result == PackageManager.PERMISSION_GRANTED;
- }
-
- private void requestPermission() {
-
- ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE);
- }
-
@Override
- public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+ protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
+
+ super.onActivityResult(requestCode, resultCode, data);
+
+ final TinyDB tinyDb = new TinyDB(appCtx);
+
+ if (requestCode == 40 && resultCode == RESULT_OK) {
+
+ try {
+
+ assert data != null;
+ Uri uri = data.getData();
+
+ assert uri != null;
+ OutputStream outputStream = getContentResolver().openOutputStream(uri);
+
+ byte[] dataAsBytes = Base64.decode(tinyDb.getString("downloadFileContents"), 0);
+
+ assert outputStream != null;
+ outputStream.write(dataAsBytes);
+ outputStream.close();
+
+ Toasty.info(ctx, getString(R.string.downloadFileSaved));
+
+ }
+ catch (IOException e) {
+ Log.e("errorFileDownloading", Objects.requireNonNull(e.getMessage()));
+ }
- switch(requestCode) {
- case PERMISSION_REQUEST_CODE:
- if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
- Log.i("PermissionsCheck", "Permission Granted");
- }
- else {
- Log.e("PermissionsCheck", "Permission Denied");
- }
- break;
}
+
}
private void initCloseListener() {
- onClickListener = new View.OnClickListener() {
+ onClickListener = view -> {
- @Override
- public void onClick(View view) {
+ getIntent().removeExtra("singleFileName");
+ finish();
- getIntent().removeExtra("singleFileName");
- finish();
- }
};
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index e11ed0dc..f88b2995 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -605,7 +605,7 @@
Download This File
Please wait for the file to load to memory
- File is saved to Download directory
+ File saved successfully
This file type is not supported in file viewer. Download it instead from the three dotted menu?
Size