summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Holesovsky <kendy@collabora.com>2019-12-13 15:47:37 +0100
committerJan Holesovsky <kendy@collabora.com>2019-12-13 15:50:54 +0100
commit6e8ebc5f87e62a391cfca0429c6c4bea7f6ccbfb (patch)
treef1f8ff8f54d6467825156544f5099dccea425207
parentbe3a03436730f1ea7c0d9c74135b3b611f5838c5 (diff)
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@collabora.com> Tested-by: Jan Holesovsky <kendy@collabora.com>
-rw-r--r--android/app/build.gradle1
-rw-r--r--android/app/src/main/AndroidManifest.xml10
-rw-r--r--android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java18
-rw-r--r--android/app/src/main/res/values/strings.xml2
-rw-r--r--android/app/src/main/res/xml/provider_paths.xml5
5 files changed, 27 insertions, 9 deletions
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>