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]
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