[Libreoffice-commits] online.git: Branch 'distro/collabora/co-4-2-0' - android/app
Jan Holesovsky (via logerrit)
logerrit at kemper.freedesktop.org
Fri Dec 13 14:51:13 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 6e8ebc5f87e62a391cfca0429c6c4bea7f6ccbfb
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:50:54 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>
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