Accéder au contenu principal

How to listen incoming sms on android ?

How to listen incoming sms on android ?

Pour écouter les messages entrant sur Android , nous allons utilisés l'objet appelé broadcastreceiver.
  • Après avoir crée le projet dans Android Studio, nous allons procéder comme suit :
  • nous allons modifier notre fichier manifest.xml et ajouter les permissions pour le recevoir les sms à savoir <uses-permission android:name="android.permission.RECEIVE_SMS" />.
  • nous allons créer un service qui vas se charger d'écouter les messages entrants. pour ceux qui ne connaissent pas bien les services, je vous recommande service.
  • dans notre service, nous allons declarer un objet du type broadcast receiver. il est à noter que dans cette méthode nous allons enregistrer automatique notre broadcast receiver. Ainsi nous allons ajouter :
    private final BroadcastReceiver receiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                String action = intent.getAction();
                if (action.equals("android.provider.Telephony.SMS_RECEIVED")) {
                    Bundle bundle = intent.getExtras();
                    if (bundle != null) {
                        Object[] pdus = (Object[]) bundle.get("pdus");
                        SmsMessage[] messages = new SmsMessage[pdus.length];
                        for (int i = 0; i < pdus.length; i++) {
                            messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
                        }
                        String strMessageBody = "";
                        String strMessageFrom = "";
                        for (SmsMessage message : messages) {
                            strMessageFrom = message.getDisplayOriginatingAddress();
                            strMessageBody = message.getDisplayMessageBody();
                        }
                         Toast.makeText(context,strMessageFrom,Toast.LENGTH_LONG).show();
                         Toast.makeText(context,strMessageBody,Toast.LENGTH_LONG).show();
                 }
              }
         }
    };
    
  • c'est le Action provider qui permet de "capter" le signal émi par l'arriver d'un sms.
  • Ainsi lorsque message arrive, on nous affiche la source et le contenu du message
  • Il suffit maintenant de lancer notre service dans le oncreate de l'activité principale

dans le prochain article, nous proposerons une méthode assez intelligente pour économiser la batterie car cette méthode a pour inconvénient de tourner continuellement.

Commentaires