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