2017-09-25 3 views
-1

Je crée une application Android simple où j'essaie d'intercepter les messages SMS entrants. Le problème que j'ai est que les messages de toast de l'onReceive n'apparaissent pas. S'il vous plaît aider!Toast ne s'affiche pas dans SMS Recevoir l'application Android

Merci,

Isaiah Thompson

public class SMSR extends BroadcastReceiver 
{ 
@Override 
public void onReceive(Context context, Intent intent) 
{ 
    //Print Message 
    Toast.makeText(context,"Received Message Start",Toast.LENGTH_SHORT).show(); 

    // Get the data (SMS data) bound to intent 
    Bundle bundle = intent.getExtras(); 

    SmsMessage[] msgs = null; 

    String str = ""; 

    if (bundle != null) { 
     // Retrieve the SMS Messages received 
     Object[] pdus = (Object[]) bundle.get("pdus"); 
     msgs = new SmsMessage[pdus.length]; 

     // For every SMS message received 
     for (int i = 0; i < msgs.length; i++) { 
      // Convert Object array 
      msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); 
      // Sender's phone number 
      str += "SMS from " + msgs[i].getOriginatingAddress() + " : "; 
      // Fetch the text message 
      str += msgs[i].getMessageBody().toString(); 
      // Newline <img draggable="false" class="emoji" alt="" src="https://s.w.org/images/core/emoji/72x72/1f642.png"> 
      str += "\n"; 
     } 
    } 


    //Print Message 
    Toast.makeText(context,"Received Message End",Toast.LENGTH_SHORT).show(); 
    Toast.makeText(context,str,Toast.LENGTH_SHORT).show(); 
} 

}

+0

Ne pas utiliser 'Toast' pour le débogage. Utilisez 'Log.d' à la place. Aussi - êtes-vous certain que vous recevez le SMS – Rahel

+0

Il y a beaucoup de pièces en mouvement. Cochez cette réponse pour un guide détaillé. https://stackoverflow.com/a/11436473/6051131 – Rahel

+0

Je ne pense pas que je reçois des messages SMS. Lorsque j'envoie un texte de test, l'application ne semble pas l'intercepter, mais je crois que le code ci-dessus est la bonne façon de le faire. –

Répondre

2

Essayez cette

new Handler(Looper.getMainLooper()).post(new Runnable() 
{ 
    @Override 
    public void run() 
    { 
     Toast.makeText(context, R.string.sent, Toast.LENGTH_SHORT).show(); 
    } 
}); 
+0

Merci pour votre réponse. –