Skip to content
Cordova plugin to receive SMS in Android
Branch: master
Clone or download
Latest commit 317647e Feb 9, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
demo Added missing demo scripts May 2, 2018
src/android Updated SMSReceive.java Feb 9, 2019
www Initial commit Apr 15, 2018
.gitattributes Initial commit Apr 15, 2018
.gitignore Initial commit Apr 15, 2018
LICENSE Initial commit Apr 15, 2018
README.md Updated README Apr 15, 2018
package.json Updated SMSReceive.java Feb 9, 2019
plugin.xml Updated SMSReceive.java Feb 9, 2019

README.md

License Platform Contribute
License Platform Donate

cordova-plugin-sms-receive

Cordova plugin to get received SMS contents in Android platform.

Installation

Use the plugin with Cordova CLI (v6.x or above):

cordova plugin add cordova-plugin-sms-receive

Methods

SMSReceive.startWatch(successCallback, failureCallback);
SMSReceive.stopWatch(successCallback, failureCallback);

SMSReceive.startWatch(successCallback, failureCallback)

Start listening for incoming SMS and raise the onSMSArrive event when this happens. Example usage:

SMSReceive.startWatch(function() {
	console.log('smsreceive: watching started');
}, function() {
	console.warn('smsreceive: failed to start watching');
});

SMSReceive.stopWatch(successCallback, failureCallback)

Stops listening for incoming SMS. Important! Always invoke this method after you have received the required SMS to prevent memory leaks.

SMSReceive.stopWatch(function() {
	console.log('smsreceive: watching stopped');
}, function() {
	console.warn('smsreceive: failed to stop watching');
});

Events

onSMSArrive

Triggered when a new SMS has arrived. You need call startWatch() first.

/* Initialize incoming SMS event listener */
document.addEventListener('onSMSArrive', function(e) {
	console.log('onSMSArrive()');
	var IncomingSMS = e.data;
	console.log('sms.address:' + IncomingSMS.address);
	console.log('sms.body:' + IncomingSMS.body);
	/* Debug received SMS content (JSON) */
	console.log(JSON.stringify(IncomingSMS));
});

Demo App

To test this plugin in a Cordova app using the provided sample:

  1. Create a blank cordova app as you regularly do.
  2. Install it using the plugin id cordova-plugin-sms-receive
  3. Replace your index.html with the one provided here at the demo folder
  4. Start the app in your emulator or device and test the plugin.
  5. When you are satisfied, kindly send a donation using the PayPal button on this page.

Screenshots

Here are some screens from the SMSReceiverDemo sample app included in the demo folder. Feel free to try this demo in whatever device you find.

ScreenShot

ScreenShot

ScreenShot

Notice: The previous screenshot shows an undefined SMS service centre number because this testing was performed in the emulator. On a real device, the correct SMS center number used to deliver the message will be shown.

About this Plugin

Why this plugin has been created?

This plugin has been written based on dozens of samples around the web because existing plugins have some issues:

This plugin does not send SMS nor intercept incoming SMS: the intercepting feature has been removed in Android 5 or earlier for security concerns, so no plugin can do this anymore.

How this plugin has been tested?

I have tested this plugin with success on:

  • Android 4.0.3 emulator
  • Android 5.1.1 emulator
  • Android 6.0 emulator
  • Android 7.1.1 emulator
  • BLU Vivo 4 (Android 4.1.1 Jelly Bean)
  • BLU Energy Mini (Android 5.1 Lollipop)
  • BLU Vivo 5 Mini (Android 6.0 Marshmallow)
  • BLU Studio J8 (Android 7.0 Nougat)
  • Samsung Galaxy S6810 (Android 4.1.2 Jelly Bean)
  • Samsung Galaxy I9190 (Android 4.4.2 KitKat)

Yes, I know: all my phones are deprecated or obsolete ... If you want me to test the plugin in Android 8+, kindly send a generous donation to help me acquire a Sony Xperia XZ1 device. You'll also get almost-instant Email support from me if you have any questions.

Does the plugin still work with the app minimized?

When the app is sent to the background, as long as Android has not unloaded it to recover memory, SMS watching will remain active and working correctly.

Android 6.0+ Permissions Request

The SMSReceive.startWatch() method will cause the Android permission dialog to show up with this message:

Allow [AppName] to send and view SMS messages? [DENY] [ALLOW]

This message is not exactly accurate, because the plugin only requests permission for receiving SMS as follows:

<uses-permission android:name="android.permission.RECEIVE_SMS" />

Contributing

Please consider contributing with a small donation using the PayPal button at the top if you liked this plugin and it works as expected. This will allow me to get newer, more up-to-date phones to test my work.

For support, you may post in the Issues section. Be aware that I don't have much time for dealing with Java and the Android APIs, so before you start complaining that X does not work, make sure to compare the plugin behavior across different devices and emulators in order to locate the exact source of the problem.

Even if you don't quite understand Java, you can investigate and locate issues with the plugin code by opening the SMSReceive.java file and browsing StackOverflow or the Android APIs documentation with the proper keywords.

How to post Issues

If you are convinced that the plugin needs to be fixed / updated, kindly post your issue in full detail, including Android version, device brand and name, Cordova and cordova-android versions.

Please don't expect me to instantly reply with a magical solution or a new plugin version, but I'll try to help in whatever I can. I'm interested in mantaining this plugin in a working condition, so try to send useful, constructive feedback whenever possible.

You can’t perform that action at this time.