From bf848528f22607c3a63507a55e640b03302acac9 Mon Sep 17 00:00:00 2001 From: Willy Martin Date: Fri, 8 Mar 2019 11:51:09 +0700 Subject: [PATCH 1/8] Support for Android 7.0 and Support adding attachment with URL parameter (android only) --- README.md | 3 ++- android/src/main/AndroidManifest.xml | 11 +++++++++++ .../reactlibrary/mailcompose/RNMailComposeModule.java | 6 +++++- android/src/main/res/xml/provider_paths.xml | 9 +++++++++ 4 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 android/src/main/res/xml/provider_paths.xml diff --git a/README.md b/README.md index ee5a0c6..a4ca1ad 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,8 @@ async sendMail() { ext: '.txt', mimeType: 'text/plain', text: 'Hello my friend', // Use this if the data is in UTF8 text. - data: '...BASE64_ENCODED_STRING...', // Or, use this if the data is not in plain text. + data: '...BASE64_ENCODED_STRING...', // Or, use this if the data is not in plain text., + url:'path to the file' // Use this if the data is path to the attachment file }], }); } catch (e) { diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml index 9758ec9..94e96f5 100644 --- a/android/src/main/AndroidManifest.xml +++ b/android/src/main/AndroidManifest.xml @@ -1,4 +1,15 @@ + + + + + diff --git a/android/src/main/java/com/reactlibrary/mailcompose/RNMailComposeModule.java b/android/src/main/java/com/reactlibrary/mailcompose/RNMailComposeModule.java index f0f2bd0..3361ba7 100644 --- a/android/src/main/java/com/reactlibrary/mailcompose/RNMailComposeModule.java +++ b/android/src/main/java/com/reactlibrary/mailcompose/RNMailComposeModule.java @@ -107,6 +107,7 @@ private void addAttachments(Intent intent, ReadableArray attachments) { if (attachment != null) { byte[] blob = getBlob(attachment, "data"); String text = getString(attachment, "text"); + String url = getString(attachment,"url"); // String mimeType = getString(attachment, "mimeType"); String filename = getString(attachment, "filename"); if (filename == null) { @@ -120,10 +121,13 @@ private void addAttachments(Intent intent, ReadableArray attachments) { tempFile = writeBlob(tempFile, blob); } else if (text != null) { tempFile = writeText(tempFile, text); + } else if(url != null){ + tempFile = new File(url); } if (tempFile != null) { - uris.add(Uri.fromFile(tempFile)); + Uri tempFileUri = FileProvider.getUriForFile(getCurrentActivity(),this.getReactApplicationContext().getPackageName()+".provider",tempFile); + uris.add(Uri.fromFile(tempFileUri)); } } } diff --git a/android/src/main/res/xml/provider_paths.xml b/android/src/main/res/xml/provider_paths.xml new file mode 100644 index 0000000..1434ff0 --- /dev/null +++ b/android/src/main/res/xml/provider_paths.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file From d86855d85b0050438bdd2770353ea7161979c97c Mon Sep 17 00:00:00 2001 From: Willy Martin Date: Fri, 8 Mar 2019 12:00:27 +0700 Subject: [PATCH 2/8] fix Unknown Module FileProvider and Mismatch variable --- .../java/com/reactlibrary/mailcompose/RNMailComposeModule.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/android/src/main/java/com/reactlibrary/mailcompose/RNMailComposeModule.java b/android/src/main/java/com/reactlibrary/mailcompose/RNMailComposeModule.java index 3361ba7..60b40f7 100644 --- a/android/src/main/java/com/reactlibrary/mailcompose/RNMailComposeModule.java +++ b/android/src/main/java/com/reactlibrary/mailcompose/RNMailComposeModule.java @@ -8,6 +8,7 @@ import android.text.Html; import android.text.Spanned; import android.util.Base64; +import android.support.v4.content.FileProvider; import com.facebook.react.bridge.ActivityEventListener; import com.facebook.react.bridge.BaseActivityEventListener; @@ -127,7 +128,7 @@ private void addAttachments(Intent intent, ReadableArray attachments) { if (tempFile != null) { Uri tempFileUri = FileProvider.getUriForFile(getCurrentActivity(),this.getReactApplicationContext().getPackageName()+".provider",tempFile); - uris.add(Uri.fromFile(tempFileUri)); + uris.add(tempFileUri); } } } From 31c1ba8ac24560a713f2f92f3e82e193f3c80eb8 Mon Sep 17 00:00:00 2001 From: Willy Martin Date: Fri, 8 Mar 2019 12:14:52 +0700 Subject: [PATCH 3/8] Fixing user get Operation has been cancelled due too no resultCode will be sent from other apps --- .../reactlibrary/mailcompose/RNMailComposeModule.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/android/src/main/java/com/reactlibrary/mailcompose/RNMailComposeModule.java b/android/src/main/java/com/reactlibrary/mailcompose/RNMailComposeModule.java index 60b40f7..4f107c4 100644 --- a/android/src/main/java/com/reactlibrary/mailcompose/RNMailComposeModule.java +++ b/android/src/main/java/com/reactlibrary/mailcompose/RNMailComposeModule.java @@ -46,11 +46,10 @@ public class RNMailComposeModule extends ReactContextBaseJavaModule { public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent intent) { if (requestCode == ACTIVITY_SEND) { if (mPromise != null) { - if (resultCode == Activity.RESULT_CANCELED) { - mPromise.reject("cancelled", "Operation has been cancelled"); - } else { - mPromise.resolve("sent"); - } + //no matter what is the action on the email apps, the resultCode will reply for 0 or equals to RESULT_CANCEL + //refer to: https://stackoverflow.com/questions/3778048/how-can-we-use-startactivityforresult-for-email-intent + //always treat it as sent after user redirected to the mailing apps + mPromise.resolve("sent"); mPromise = null; } } From 7f53bc2fdc53f02162d0f43a30b81c237e3c6f60 Mon Sep 17 00:00:00 2001 From: Willy Martin Date: Fri, 8 Mar 2019 14:46:15 +0700 Subject: [PATCH 4/8] Update build.gradle --- android/build.gradle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index 69ac46b..2fe51df 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,12 +1,12 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 23 - buildToolsVersion "23.0.1" + compileSdkVersion 28 + buildToolsVersion "28.0.1" defaultConfig { minSdkVersion 16 - targetSdkVersion 22 + targetSdkVersion 28 versionCode 1 versionName "1.0" ndk { From 1aa1686e211a88ad8dd64c4b52c2764d6a6daaa0 Mon Sep 17 00:00:00 2001 From: Willy Martin Date: Fri, 8 Mar 2019 14:47:43 +0700 Subject: [PATCH 5/8] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f9f8ba7..36e07c0 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "react-native-mail-compose", - "version": "0.0.6", + "version": "0.0.7", "description": "React Native library for composing email. Wraps MFMailComposeViewController for iOS and Intent for Android.", "main": "index.js", "scripts": { From b252130cdc74e35e375fdacc97d3f14566d1c4f5 Mon Sep 17 00:00:00 2001 From: Willy Martin Date: Fri, 8 Mar 2019 14:56:23 +0700 Subject: [PATCH 6/8] Adding up app name value on Android Manifest --- android/src/main/AndroidManifest.xml | 1 - android/src/main/res/values/strings.xml | 3 +++ package.json | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 android/src/main/res/values/strings.xml diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml index 94e96f5..573bfc1 100644 --- a/android/src/main/AndroidManifest.xml +++ b/android/src/main/AndroidManifest.xml @@ -1,7 +1,6 @@ - + react-native-mail-compose + diff --git a/package.json b/package.json index 36e07c0..348568e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "react-native-mail-compose", - "version": "0.0.7", + "version": "0.0.7b", "description": "React Native library for composing email. Wraps MFMailComposeViewController for iOS and Intent for Android.", "main": "index.js", "scripts": { From f0157a497fe098bed83c29b6e67947d3f82a0ee6 Mon Sep 17 00:00:00 2001 From: Willy Martin Date: Fri, 8 Mar 2019 14:57:03 +0700 Subject: [PATCH 7/8] fix invalid versioning --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 348568e..b48e467 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "react-native-mail-compose", - "version": "0.0.7b", + "version": "0.0.8", "description": "React Native library for composing email. Wraps MFMailComposeViewController for iOS and Intent for Android.", "main": "index.js", "scripts": { From 376ba6f2609fd495b82463bdaff1c2aa74182d1b Mon Sep 17 00:00:00 2001 From: Willy Martin Date: Wed, 13 Mar 2019 13:58:34 +0700 Subject: [PATCH 8/8] Upgraded to match the RN 0.59.*. --- ExampleApp/android/.project | 17 +++++++++++++++++ .../.settings/org.eclipse.buildship.core.prefs | 2 ++ android/.project | 17 +++++++++++++++++ .../.settings/org.eclipse.buildship.core.prefs | 2 ++ .../mailcompose/RNMailComposeModule.java | 5 ++++- package.json | 5 ++++- 6 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 ExampleApp/android/.project create mode 100644 ExampleApp/android/.settings/org.eclipse.buildship.core.prefs create mode 100644 android/.project create mode 100644 android/.settings/org.eclipse.buildship.core.prefs diff --git a/ExampleApp/android/.project b/ExampleApp/android/.project new file mode 100644 index 0000000..0e0a1ba --- /dev/null +++ b/ExampleApp/android/.project @@ -0,0 +1,17 @@ + + + android_ + Project android_ created by Buildship. + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + + org.eclipse.buildship.core.gradleprojectnature + + diff --git a/ExampleApp/android/.settings/org.eclipse.buildship.core.prefs b/ExampleApp/android/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 0000000..e889521 --- /dev/null +++ b/ExampleApp/android/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,2 @@ +connection.project.dir= +eclipse.preferences.version=1 diff --git a/android/.project b/android/.project new file mode 100644 index 0000000..3964dd3 --- /dev/null +++ b/android/.project @@ -0,0 +1,17 @@ + + + android + Project android created by Buildship. + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + + org.eclipse.buildship.core.gradleprojectnature + + diff --git a/android/.settings/org.eclipse.buildship.core.prefs b/android/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 0000000..e889521 --- /dev/null +++ b/android/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,2 @@ +connection.project.dir= +eclipse.preferences.version=1 diff --git a/android/src/main/java/com/reactlibrary/mailcompose/RNMailComposeModule.java b/android/src/main/java/com/reactlibrary/mailcompose/RNMailComposeModule.java index 4f107c4..23ac4de 100644 --- a/android/src/main/java/com/reactlibrary/mailcompose/RNMailComposeModule.java +++ b/android/src/main/java/com/reactlibrary/mailcompose/RNMailComposeModule.java @@ -36,7 +36,10 @@ public class RNMailComposeModule extends ReactContextBaseJavaModule { - private static final int ACTIVITY_SEND = 129382; + + //Updating to RN 0.59.* + //Fixing issue: can only use lower 16 bits for requestCode on Intent + private static final int ACTIVITY_SEND = 65510; private Promise mPromise; diff --git a/package.json b/package.json index b48e467..a814afe 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "react-native-mail-compose", - "version": "0.0.8", + "version": "0.0.9", "description": "React Native library for composing email. Wraps MFMailComposeViewController for iOS and Intent for Android.", "main": "index.js", "scripts": { @@ -24,6 +24,9 @@ "android" ], "author": "Joon Ho Cho ", + "contributors":[ + "Willy Martin (https://github.com/nowarzz)" + ], "license": "MIT", "bugs": { "url": "https://github.com/joonhocho/react-native-mail-compose/issues"