Skip to content

gitter-badger/react-native-get-sms-android

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

react-native-get-sms-android

Module that gets all the messages from android

Decided to start this package because react-native-android-sms isn't maintained. It doesn't work with newer React native versions


Getting started

Yarn

$ yarn add react-native-get-sms-android

Npm

$ npm install react-native-get-sms-android --save

Mostly automatic installation

$ react-native link react-native-get-sms-android

Manual installation

android/settings.gradle

include ':react-native-get-sms-android'
project('react-native-get-sms-android').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-get-sms-android/android')

android/app/build.gradle

dependencies{
    compile project(':react-native-get-sms-android')
 }

MainApplication.java

import com.react.SmsPackage;

@Override
protected List<ReactPackage> getPackages() {
  return Arrays.<ReactPackage>asList(
    new MainReactPackage(),
    new SmsPackage()
    // (...)
  );
}

Android Permissions

Add permissions to your android/app/src/main/AndroidManifest.xml file.

...
  <uses-permission android:name="android.permission.READ_SMS" />
  <uses-permission android:name="android.permission.WRITE_SMS" />
  <uses-permission android:name="android.permission.SEND_SMS" />
...

Usage

List SMS Messages

import SmsAndroid  from 'react-native-get-sms-android';

/* List SMS messages matching the filter */
var filter = {
    box: 'inbox', // 'inbox' (default), 'sent', 'draft', 'outbox', 'failed', 'queued', and '' for all
    // the next 4 filters should NOT be used together, they are OR-ed so pick one
    read: 0, // 0 for unread SMS, 1 for SMS already read
    _id: 1234, // specify the msg id
    address: '+1888------', // sender's phone number
    body: 'How are you', // content to match
    // the next 2 filters can be used for pagination
    indexFrom: 0, // start from index 0
    maxCount: 10, // count of SMS to return each time
};

SmsAndroid.list(JSON.stringify(filter), (fail) => {
        console.log("Failed with this error: " + fail)
    },
    (count, smsList) => {
        console.log('Count: ', count);
        console.log('List: ', smsList);
        var arr = JSON.parse(smsList);

        arr.forEach(function(object){
            console.log("Object: " + obj);
            console.log("-->" + obj.date);
            console.log("-->" + obj.body);
        })
    });

/* 
Each sms will be represents by a JSON object represented below

{
  "_id": 1234,
  "thread_id": 3,
  "address": "2900",
  "person": -1,
  "date": 1365053816196,
  "date_sent": 0,
  "protocol": 0,
  "read": 1,
  "status": -1,
  "type": 1,
  "body": "Hello There, I am an SMS",
  "service_center": "+60162999922",
  "locked": 0,
  "error_code": -1,
  "sub_id": -1,
  "seen": 1,
  "deletable": 0,
  "sim_slot": 0,
  "hidden": 0,
  "app_id": 0,
  "msg_id": 0,
  "reserved": 0,
  "pri": 0,
  "teleservice_id": 0,
  "svc_cmd": 0,
  "roam_pending": 0,
  "spam_report": 0,
  "secret_mode": 0,
  "safe_message": 0,
  "favorite": 0
}

*/

Delete SMS Message

Delete an sms with id. If the message with the specified id does not exist it will fail with error: SMS not found

import SmsAndroid  from 'react-native-get-sms-android';

SmsAndroid.delete(_id, (fail) => {
    console.log("Failed with this error: " + fail)
}, (success) => {
    console.log("SMS deleted successfully");
});

Send SMS Message (automatically)

Send an sms directy with react without user interaction.

import SmsAndroid  from 'react-native-get-sms-android';

SmsAndroid.autoSend(phoneNumber, message, (fail) => {
    console.log("Failed with this error: " + fail)
}, (success) => {
    console.log("SMS sent successfully");
});

Event listeners

An event will be thrown when the sms has been delivered. If the sms was delivered successfully the message will be "SMS delivered" otherwise the message will be "SMS not delivered"

    import { DeviceEventEmitter } from 'react-native';

     DeviceEventEmitter.addListener('sms_onDelivery', (msg) => {
      console.log(msg); 
    });

thanks

  • react-native-android-sms

About

React Native module to get messages from android device

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 54.1%
  • JavaScript 21.0%
  • Objective-C 17.9%
  • Python 7.0%