Nara Na
Nara Na

Reputation: 101

How to receive incoming message on Android [MM]?

I want to write an app that will do something when it received a message. I have google for answer for many days and found some solution like this one: Link but it is not working on android 6 or marshmallow at all. So is there a way to wake up my app to do something whenever it received a message on android marshmallow?

Upvotes: 1

Views: 389

Answers (1)

iAndroid
iAndroid

Reputation: 951

Below example work for me in MM also

BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
                @Override
                public void onReceive(Context context, Intent intent) {
                    if (Telephony.Sms.Intents.SMS_RECEIVED_ACTION.equals(intent.getAction())) {
                        final Bundle bundle = intent.getExtras();
                        try {
                            if (bundle != null) {
                                final Object[] pdusObj = (Object[]) bundle.get("pdus");
                                for (int i = 0; i < pdusObj.length; i++) {
                                    SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
                                    String phoneNumber = currentMessage.getDisplayOriginatingAddress();
                                    String senderNum = phoneNumber;
                                    String message = currentMessage.getDisplayMessageBody();
                                    Logger.e("sender Num" + senderNum);
                                    Logger.e("message" + message);
                                }
                            }

                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }
            };

            IntentFilter filter = new IntentFilter(Telephony.Sms.Intents.SMS_RECEIVED_ACTION);
            registerReceiver(broadcastReceiver, filter);

onDestroy method unregister broadcast receiver

unregisterReceiver(broadcastReceiver);

Upvotes: 1

Related Questions