android/app/build.gradle | 1 android/app/src/main/AndroidManifest.xml | 10 +++++ android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java | 18 +++++----- android/app/src/main/res/values/strings.xml | 2 + android/app/src/main/res/xml/provider_paths.xml | 5 ++ 5 files changed, 27 insertions(+), 9 deletions(-)
New commits: commit 468595e949118cb894d12cc3c210ff70f3d970db Author: Jan Holesovsky <ke...@collabora.com> AuthorDate: Fri Dec 13 15:47:37 2019 +0100 Commit: Jan Holesovsky <ke...@collabora.com> CommitDate: Fri Dec 13 15:53:04 2019 +0100 tdf#129192: Implement sharing from the shell. The old code cannot work on newer Android. Partially based on work by Kaishu Sahu, thank you! Change-Id: I15e3f583572285642bc47595c21f4469f5a544a1 Reviewed-on: https://gerrit.libreoffice.org/85121 Reviewed-by: Jan Holesovsky <ke...@collabora.com> Tested-by: Jan Holesovsky <ke...@collabora.com> (cherry picked from commit 6e8ebc5f87e62a391cfca0429c6c4bea7f6ccbfb) Reviewed-on: https://gerrit.libreoffice.org/85122 diff --git a/android/app/build.gradle b/android/app/build.gradle index 158ea2ddf..2a8c7e2e1 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -58,6 +58,7 @@ repositories { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'androidx.appcompat:appcompat:1.0.2' + implementation 'androidx.core:core:1.0.2' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'androidx.recyclerview:recyclerview:1.0.0' implementation 'com.google.android.material:material:1.1.0-alpha04' diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index fb584befd..8a501c8a0 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -126,6 +126,16 @@ android:name=".SettingsActivity" android:label="@string/app_name_settings" android:theme="@style/Theme.AppCompat.Light" /> + + <provider + android:name="androidx.core.content.FileProvider" + android:authorities="${applicationId}.fileprovider" + android:exported="false" + android:grantUriPermissions="true"> + <meta-data + android:name="android.support.FILE_PROVIDER_PATHS" + android:resource="@xml/provider_paths"/> + </provider> </application> </manifest> diff --git a/android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java b/android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java index 167ae17c1..60273b622 100644 --- a/android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java +++ b/android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java @@ -92,6 +92,7 @@ import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; +import androidx.core.content.FileProvider; import androidx.core.view.ViewCompat; import androidx.drawerlayout.widget.DrawerLayout; import androidx.localbroadcastmanager.content.LocalBroadcastManager; @@ -730,7 +731,6 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings } private void share(int position) { - new AsyncTask<IFile, Void, File>() { @Override protected File doInBackground(IFile... document) { @@ -755,14 +755,14 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings @Override protected void onPostExecute(File file) { if (file != null) { - Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND); - Uri uri = Uri.fromFile(file); - sharingIntent.setType(FileUtilities.getMimeType(file.getName())); - sharingIntent.putExtra(android.content.Intent.EXTRA_STREAM, uri); - sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, - file.getName()); - startActivity(Intent.createChooser(sharingIntent, - getString(R.string.share_via))); + Intent intentShareFile = new Intent(Intent.ACTION_SEND); + Uri finalDocUri = FileProvider.getUriForFile(LibreOfficeUIActivity.this, + LibreOfficeUIActivity.this.getApplicationContext().getPackageName() + ".fileprovider", + file); + intentShareFile.putExtra(Intent.EXTRA_STREAM, finalDocUri); + intentShareFile.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + intentShareFile.setDataAndType(finalDocUri, LibreOfficeUIActivity.this.getContentResolver().getType(finalDocUri)); + LibreOfficeUIActivity.this.startActivity(Intent.createChooser(intentShareFile, LibreOfficeUIActivity.this.getString(R.string.share_document))); } } }.execute(filePaths.get(position)); diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 033ae98c2..12f65fc11 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -125,6 +125,8 @@ <!-- Loading SlideShow Dialog Strings --> <string name="loading">Loading...</string> + <string name="share_document">Share Document</string> + <!-- Presentation Mode Strings --> <!-- Calc Header Menu Strings --> diff --git a/android/app/src/main/res/xml/provider_paths.xml b/android/app/src/main/res/xml/provider_paths.xml new file mode 100644 index 000000000..7ac8d00a0 --- /dev/null +++ b/android/app/src/main/res/xml/provider_paths.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<paths xmlns:android="http://schemas.android.com/apk/res/android"> + <cache-path name="cache_dir" path="/"/> + <external-path name="external_dir" path="/" /> +</paths> _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits