[Libreoffice-commits] online.git: android/app

Jan Holesovsky (via logerrit) logerrit at kemper.freedesktop.org
Fri Dec 13 14:53:24 UTC 2019


 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 <kendy at collabora.com>
AuthorDate: Fri Dec 13 15:47:37 2019 +0100
Commit:     Jan Holesovsky <kendy at 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 <kendy at collabora.com>
    Tested-by: Jan Holesovsky <kendy at 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>


More information about the Libreoffice-commits mailing list