From ba88896e5242f1407d62592ed5bef8513f08455d Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Sat, 27 Jul 2019 19:46:01 +0900 Subject: [PATCH] added single share --- .../java/deckers/thibault/aves/MainActivity.java | 11 +++++++++-- .../deckers/thibault/aves/utils/ShareUtils.java | 14 ++++++++++++++ lib/model/image_fetcher.dart | 12 ++++++++++++ 3 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 android/app/src/main/java/deckers/thibault/aves/utils/ShareUtils.java diff --git a/android/app/src/main/java/deckers/thibault/aves/MainActivity.java b/android/app/src/main/java/deckers/thibault/aves/MainActivity.java index 83c8cc1a0..9c22073d2 100644 --- a/android/app/src/main/java/deckers/thibault/aves/MainActivity.java +++ b/android/app/src/main/java/deckers/thibault/aves/MainActivity.java @@ -38,6 +38,7 @@ import java.util.stream.Collectors; import deckers.thibault.aves.model.ImageEntry; import deckers.thibault.aves.model.provider.MediaStoreImageProvider; +import deckers.thibault.aves.utils.ShareUtils; import deckers.thibault.aves.utils.Utils; import io.flutter.app.FlutterActivity; import io.flutter.plugin.common.MethodChannel; @@ -102,10 +103,16 @@ public class MainActivity extends FlutterActivity { case "cancelGetImageBytes": { String uri = call.argument("uri"); thumbnailFetcher.cancel(uri); - // do not send `null`, as it closes the channel - result.success(""); + result.success(null); break; } + case "share": { + String title = call.argument("title"); + Uri uri = Uri.parse(call.argument("uri")); + String mimeType = call.argument("mimeType"); + ShareUtils.share(this, title, uri, mimeType); + result.success(null); + } default: result.notImplemented(); break; diff --git a/android/app/src/main/java/deckers/thibault/aves/utils/ShareUtils.java b/android/app/src/main/java/deckers/thibault/aves/utils/ShareUtils.java new file mode 100644 index 000000000..188abd9d1 --- /dev/null +++ b/android/app/src/main/java/deckers/thibault/aves/utils/ShareUtils.java @@ -0,0 +1,14 @@ +package deckers.thibault.aves.utils; + +import android.app.Activity; +import android.content.Intent; +import android.net.Uri; + +public class ShareUtils { + public static void share(Activity activity, String title, Uri uri, String mimeType) { + Intent intent = new Intent(Intent.ACTION_SEND); + intent.putExtra(Intent.EXTRA_STREAM, uri); + intent.setType(mimeType); + activity.startActivity(Intent.createChooser(intent, title)); + } +} \ No newline at end of file diff --git a/lib/model/image_fetcher.dart b/lib/model/image_fetcher.dart index 418ab4914..fd97d73ee 100644 --- a/lib/model/image_fetcher.dart +++ b/lib/model/image_fetcher.dart @@ -55,4 +55,16 @@ class ImageFetcher { } return Map(); } + + static share(String uri, String mimeType) async { + try { + await platform.invokeMethod('share', { + 'title': 'Share via:', + 'uri': uri, + 'mimeType': mimeType, + }); + } on PlatformException catch (e) { + debugPrint('share failed with exception=${e.message}'); + } + } }