X-Git-Url: https://gitweb.stoutner.com/?p=PrivacyBrowserAndroid.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacybrowser%2Factivities%2FMainWebViewActivity.java;h=676c4d4813e6a216c158373558311c25490d9cc0;hp=b5e3c53479a4b0924109fbc4521c4529cea6dcb4;hb=6459b4b6f71dc883376a9f6c68ae34eb63a0c0fe;hpb=725e4a525bed43f46e24ecc97eafcc339a48939c diff --git a/app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java b/app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java index b5e3c534..676c4d48 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java +++ b/app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java @@ -48,11 +48,13 @@ import android.net.http.SslError; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; +import android.os.Environment; import android.os.Handler; import android.os.Message; import android.preference.PreferenceManager; import android.print.PrintDocumentAdapter; import android.print.PrintManager; +import android.provider.DocumentsContract; import android.text.Editable; import android.text.Spanned; import android.text.TextWatcher; @@ -95,7 +97,6 @@ import android.widget.RelativeLayout; import android.widget.TextView; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.ActionBarDrawerToggle; import androidx.appcompat.app.AppCompatActivity; @@ -1762,8 +1763,8 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook // Consume the event. return true; } else if (menuItemId == R.id.save_archive) { - // Instantiate the save dialog. TODO. Replace the hard coded file name. - DialogFragment saveArchiveFragment = SaveWebpageDialog.saveWebpage(SaveWebpageDialog.SAVE_ARCHIVE, null, null, "Webpage.mht", null, + // Instantiate the save dialog. + DialogFragment saveArchiveFragment = SaveWebpageDialog.saveWebpage(SaveWebpageDialog.SAVE_ARCHIVE, currentWebView.getCurrentUrl(), null, null, null, false); // Show the save dialog. It must be named `save_dialog` so that the file picker can update the file name. @@ -1772,7 +1773,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook return true; } else if (menuItemId == R.id.save_image) { // Save image. // Instantiate the save dialog. - DialogFragment saveImageFragment = SaveWebpageDialog.saveWebpage(SaveWebpageDialog.SAVE_IMAGE, null, null, getString(R.string.webpage_png), null, + DialogFragment saveImageFragment = SaveWebpageDialog.saveWebpage(SaveWebpageDialog.SAVE_IMAGE, currentWebView.getCurrentUrl(), null, null, null, false); // Show the save dialog. It must be named `save_dialog` so that the file picker can update the file name. @@ -2030,14 +2031,50 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook // Make it so. startActivity(requestsIntent); } else if (menuItemId == R.id.downloads) { // Downloads. - // Launch the system Download Manager. - Intent downloadManagerIntent = new Intent(DownloadManager.ACTION_VIEW_DOWNLOADS); + // Try the default system download manager. + try { + // Launch the default system Download Manager. + Intent defaultDownloadManagerIntent = new Intent(DownloadManager.ACTION_VIEW_DOWNLOADS); - // Launch as a new task so that Download Manager and Privacy Browser show as separate windows in the recent tasks list. - downloadManagerIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + // Launch as a new task so that the download manager and Privacy Browser show as separate windows in the recent tasks list. + defaultDownloadManagerIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - // Make it so. - startActivity(downloadManagerIntent); + // Make it so. + startActivity(defaultDownloadManagerIntent); + } catch (Exception defaultDownloadManagerException) { + // Try a generic file manager. + try { + // Create a generic file manager intent. + Intent genericFileManagerIntent = new Intent(Intent.ACTION_VIEW); + + // Open the download directory. + genericFileManagerIntent.setDataAndType(Uri.parse(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString()), DocumentsContract.Document.MIME_TYPE_DIR); + + // Launch as a new task so that the file manager and Privacy Browser show as separate windows in the recent tasks list. + genericFileManagerIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + + // Make it so. + startActivity(genericFileManagerIntent); + } catch (Exception gengericFileManagerException) { + // Try an alternate file manager. + try { + // Create an alternate file manager intent. + Intent alternateFileManagerIntent = new Intent(Intent.ACTION_VIEW); + + // Open the download directory. + alternateFileManagerIntent.setDataAndType(Uri.parse(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString()), "resource/folder"); + + // Launch as a new task so that the file manager and Privacy Browser show as separate windows in the recent tasks list. + alternateFileManagerIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + + // Open the alternate file manager. + startActivity(alternateFileManagerIntent); + } catch (Exception alternateFileManagerException) { + // Display a snackbar. + Snackbar.make(currentWebView, R.string.no_file_manager_detected, Snackbar.LENGTH_INDEFINITE).show(); + } + } + } } else if (menuItemId == R.id.domains) { // Domains. // Set the flag to reapply the domain settings on restart when returning from Domain Settings. reapplyDomainSettingsOnRestart = true; @@ -3062,7 +3099,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook } @Override - public void onSaveWebpage(int saveType, @Nullable String originalUrlString, DialogFragment dialogFragment) { + public void onSaveWebpage(int saveType, @NonNull String originalUrlString, DialogFragment dialogFragment) { // Get the dialog. Dialog dialog = dialogFragment.getDialog(); @@ -3085,7 +3122,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook String saveWebpageUrl; // Store the URL. - if ((originalUrlString != null) && originalUrlString.startsWith("data:")) { + if (originalUrlString.startsWith("data:")) { // Save the original URL. saveWebpageUrl = originalUrlString; } else { @@ -3128,7 +3165,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook temporaryMhtFileInputStream.close(); // Display a snackbar. - Snackbar.make(currentWebView, getString(R.string.file_saved) + " " + saveWebpageFilePath, Snackbar.LENGTH_SHORT).show(); + Snackbar.make(currentWebView, getString(R.string.file_saved) + " " + currentWebView.getCurrentUrl(), Snackbar.LENGTH_SHORT).show(); } catch (Exception exception) { // Display a snackbar with the exception. Snackbar.make(currentWebView, getString(R.string.error_saving_file) + " " + exception.toString(), Snackbar.LENGTH_INDEFINITE).show();