![Maven Central Adds Sigstore Signature Validation](https://cdn.sanity.io/images/cgdhsj6q/production/7da3bc8a946cfb5df15d7fcf49767faedc72b483-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Maven Central Adds Sigstore Signature Validation
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.
react-native-get-sms-android-v2
Advanced tools
React-native module that gets sms from android device
Module that supports interaction with the Messaging API on Android
The package allows you to:
Decided to start this package because react-native-android-sms wasn't maintained at the time.
$ yarn add react-native-get-sms-android
$ npm install react-native-get-sms-android --save
$ react-native link react-native-get-sms-android
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()
// (...)
);
}
Note: This has changed from 2.x. See Upgrading to 2.x
section if using <=2.x
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" />
...
You need to add permissions manually. react-native-get-sms-android
does not automatically require permissions from 2.x. Refer to this issue.
You need to require permissions in your AndroidManifest.xml
file's application
element based on what functions you plan to use like the official documentation describes:
Function | Permission needed |
---|---|
SmsAndroid.list | android.permission.READ_SMS |
SmsAndroid.delete | android.permission.WRITE_SMS |
SmsAndroid.autoSend | android.permission.SEND_SMS |
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 3 filters can work together, they are AND-ed
*
* minDate, maxDate filters work like this:
* - If and only if you set a maxDate, it's like executing this SQL query:
* "SELECT * from messages WHERE (other filters) AND date <= maxDate"
* - Same for minDate but with "date >= minDate"
*/
minDate: 1554636310165, // timestamp (in milliseconds since UNIX epoch)
maxDate: 1556277910456, // timestamp (in milliseconds since UNIX epoch)
bodyRegex: '(.*)How are you(.*)', // content regex to match
/** the next 5 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
thread_id: 12, // specify the conversation thread_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: ' + object);
console.log('-->' + object.date);
console.log('-->' + object.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 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');
},
);
For Android > 5, the only app permitted to delete an SMS message is the app installed as the default SMS handler.
If your app is not set as the default SMS handler, it will not be able to delete. See this thread on Stack Overflow for more details.
Send an sms directly 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');
},
);
import SmsAndroid from 'react-native-get-sms-android';
let phoneNumbers = {
"addressList": ["123", "456"]
};
SmsAndroid.autoSend(
JSON.stringify(phoneNumbers),
message,
(fail) => {
console.log('Failed with this error: ' + fail);
},
(success) => {
console.log('SMS sent successfully');
},
);
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);
});
Feel free to open an issue or a Pull Request.
FAQs
React-native module that gets sms from android device
The npm package react-native-get-sms-android-v2 receives a total of 1 weekly downloads. As such, react-native-get-sms-android-v2 popularity was classified as not popular.
We found that react-native-get-sms-android-v2 demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.
Security News
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.