Comment on page
Listen Incoming SMS
Requires
RECEIVE_SMS
permission.To listen to incoming SMS add the
RECEIVE_SMS
permission to your AndroidManifest.xml
file and register the BroadcastReceiver
.AndroidManifest.xml
<manifest>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<application>
...
...
<receiver android:name="com.shounakmulay.telephony.sms.IncomingSmsReceiver"
android:permission="android.permission.BROADCAST_SMS" android:exported="true">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
</application>
</manifest>
1. Create a top-level static function to handle incoming messages when app is not is foreground.
Avoid heavy computations in the background handler as Android system may kill long running operations in the background.
backgrounMessageHandler(SmsMessage message) async {
//Handle background message
}
void main() {
runApp(MyApp());
}
2. Call
listenIncomingSms
with a foreground MessageHandler
and pass in the static backgrounMessageHandler
.Multipart message will be grouped together and delivered as a single SMS to the listenIncomingSms() function.
telephony.listenIncomingSms(
onNewMessage: (SmsMessage message) {
// Handle message
},
onBackgroundMessage: backgroundMessageHandler
);
3. As of the
1.12
release of Flutter, plugins are automatically registered. This will allow you to use plugins as you normally do even in the background execution context.backgrounMessageHandler(SmsMessage message) async {
// Handle background message
// Use plugins
Vibration.vibrate(duration: 500);
}
4. If you do not wish to receive incoming SMS when the app is in background, just do not pass the
onBackgroundMessage
parameter.Alternatively if you prefer to expecility disable background execution, set the
listenInBackground
flag to false
.telephony.listenIncomingSms(
onNewMessage: (SmsMessage message) {
// Handle message
},
listenInBackground: false
);
Last modified 3yr ago