From 0c21e13459bf22d49971ece3eb3e2aa9715b0e83 Mon Sep 17 00:00:00 2001 From: emschu Date: Sat, 5 Mar 2022 11:55:45 +0100 Subject: [PATCH] add basic support to share documents via an additional item in options menu, add share icon Signed-off-by: emschu --- .../app/grapheneos/pdfviewer/PdfViewer.java | 18 +++++++++++++++++- app/src/main/res/drawable/ic_share_24dp.xml | 10 ++++++++++ app/src/main/res/menu/pdf_viewer.xml | 6 ++++++ app/src/main/res/values/strings.xml | 1 + 4 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 app/src/main/res/drawable/ic_share_24dp.xml diff --git a/app/src/main/java/app/grapheneos/pdfviewer/PdfViewer.java b/app/src/main/java/app/grapheneos/pdfviewer/PdfViewer.java index 6cb7d8c..a1e72bf 100644 --- a/app/src/main/java/app/grapheneos/pdfviewer/PdfViewer.java +++ b/app/src/main/java/app/grapheneos/pdfviewer/PdfViewer.java @@ -399,6 +399,18 @@ public class PdfViewer extends AppCompatActivity implements LoaderManager.Loader startActivityForResult(intent, ACTION_OPEN_DOCUMENT_REQUEST_CODE); } + private void shareDocument() { + if (mUri != null) { + Intent shareIntent = new Intent(Intent.ACTION_SEND); + shareIntent.setDataAndTypeAndNormalize(mUri, "application/pdf"); + shareIntent.putExtra(Intent.EXTRA_STREAM, mUri); + shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + startActivity(Intent.createChooser(shareIntent, getString(R.string.action_share))); + } else { + Log.w(TAG, "Cannot share unexpected null URI"); + } + } + private void zoomIn(float value, boolean end) { if (mZoomRatio < MAX_ZOOM_RATIO) { mZoomRatio = Math.min(mZoomRatio + value, MAX_ZOOM_RATIO); @@ -506,7 +518,7 @@ public class PdfViewer extends AppCompatActivity implements LoaderManager.Loader final int[] ids = { R.id.action_zoom_in, R.id.action_zoom_out, R.id.action_jump_to_page, R.id.action_next, R.id.action_previous, R.id.action_first, R.id.action_last, R.id.action_rotate_clockwise, R.id.action_rotate_counterclockwise, - R.id.action_view_document_properties }; + R.id.action_view_document_properties, R.id.action_share }; if (mDocumentState < STATE_LOADED) { for (final int id : ids) { final MenuItem item = menu.findItem(id); @@ -527,6 +539,7 @@ public class PdfViewer extends AppCompatActivity implements LoaderManager.Loader enableDisableMenuItem(menu.findItem(R.id.action_open), getWebViewRelease() >= MIN_WEBVIEW_RELEASE); enableDisableMenuItem(menu.findItem(R.id.action_zoom_in), mZoomRatio != MAX_ZOOM_RATIO); enableDisableMenuItem(menu.findItem(R.id.action_zoom_out), mZoomRatio != MIN_ZOOM_RATIO); + enableDisableMenuItem(menu.findItem(R.id.action_share), mUri != null); enableDisableMenuItem(menu.findItem(R.id.action_next), mPage < mNumPages); enableDisableMenuItem(menu.findItem(R.id.action_previous), mPage > 1); @@ -572,6 +585,9 @@ public class PdfViewer extends AppCompatActivity implements LoaderManager.Loader new JumpToPageFragment() .show(getSupportFragmentManager(), JumpToPageFragment.TAG); return true; + } else if (itemId == R.id.action_share) { + shareDocument(); + return true; } return super.onOptionsItemSelected(item); diff --git a/app/src/main/res/drawable/ic_share_24dp.xml b/app/src/main/res/drawable/ic_share_24dp.xml new file mode 100644 index 0000000..2f13bb3 --- /dev/null +++ b/app/src/main/res/drawable/ic_share_24dp.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/menu/pdf_viewer.xml b/app/src/main/res/menu/pdf_viewer.xml index e72fcbd..acdd788 100644 --- a/app/src/main/res/menu/pdf_viewer.xml +++ b/app/src/main/res/menu/pdf_viewer.xml @@ -37,6 +37,12 @@ android:title="@string/action_zoom_in" app:showAsAction="ifRoom" /> + + WebView out-of-date Your current WebView version is %d. The WebView should be at least version %d for the PDF Viewer to work. + Share