2012-10-12 8 views
0

Possible en double:
Can we delete an SMS in Android before it reaches the inbox?Comment éviter que les SMS des numéros de téléphone sélectionnés soient rendus visibles par l'utilisateur?

Je l'ai déjà obtenu le code de réception de SMS en cours d'exécution avec succès. Ce que je ne peux pas déterminer est un moyen (ou si c'est possible) de traiter les messages envoyés à partir de numéros de téléphone spécifiques dans mon application sans qu'ils soient rendus visibles à l'utilisateur. Tous les autres SMS envoyés à partir d'un autre numéro de téléphone seraient traités par le traitement normal des SMS Android. C'est-à-dire que les SMS provenant de numéros sélectionnés ne doivent pas être visibles par l'utilisateur du téléphone et le reste devrait l'être. Aucune suggestion?

Voici le code SMSReceiver (pris directement du livre de Wei-Meng Lee):

public class SMSReceiver extends BroadcastReceiver { 
    @Override 
     public void onReceive(Context context, Intent intent) { 
      //get the received SMS message 
     Bundle bundle = intent.getExtras(); 
      SmsMessage[] msgs = null; 
      String str = ""; 
      if (bundle != null) { 
       // retrieve the SMS message 
       Object[] pdus = (Object[]) bundle.get("pdus"); 
       msgs = new SmsMessage[pdus.length]; 
       for (int i=0; i<msgs.length; i++) { 
        msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]); 
        str += "SMS from " + msgs[i].getOriginatingAddress(); 
        str += "\nMessage Text:\n"; 
        str += msgs[i].getMessageBody().toString(); 
        str += "\nLength="+msgs[i].getMessageBody().toString().length()+"\n"; 
       } // [END FOR] 
      // display the new SMS message 
      Toast.makeText(context, str, Toast.LENGTH_SHORT).show();    
      // send a broadcast intent to update the SMS received in the activity 
      Intent broadcastIntent = new Intent(); 
      broadcastIntent.setAction("SMS_RECEIVED_ACTION"); 
      broadcastIntent.putExtra("sms", str); 
      context.sendBroadcast(broadcastIntent); 
     } // [END IF] 
    } // [END onReceive] 
} // [END SMSReceiver] 

Répondre

1
bien

si vous mettez un si avant de commencer à concaténer str, vous pouvez vérifier l'adresse d'origine, et le comparer à votre liste noire des adresses, si c'est sur la liste, puis simplement utiliser le continuer à sauter les concaténations

+1

Cela fait partie de la réponse. La solution complète nécessite de rechercher les numéros en liste blanche (ou sur liste noire), puis d'utiliser abortBroadcast() pour arrêter la propagation des SMS que vous ne voulez pas que Android traite comme des messages texte normaux. – PeteH

Questions connexes