Зарегистрируйте приемник в манифесте с наивысшим приоритетом:
<receiver android:name=".SmsReceiver">
<intent-filter android:priority="9999">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
Создать класс BroadcastReceiver:
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
}
}
Реализовать OnReceive метод:
Bundle bundle = intent.getExtras();
if (bundle != null && bundle.containsKey("pdus")) {
Object[] pdus = (Object[]) bundle.get("pdus");
SmsMessage sms = SmsMessage.createFromPdu((byte[]) pdus[0]);
String senderNumber = sms.getOriginatingAddress();
if(senderIsInBlackList(senderNumber)) {
abortBroadcast();
}
}
Не приоритет должен быть 0? Согласно google blog 0 означает «запустить после всех остальных» –
Он/она хочет заблокировать некоторые входящие сообщения, поэтому это приложение должно иметь самый высокий доступный приоритет. –