在BroadcastReceiver中public void onReceive(Context context, Intent intent) {
System.out.println("拦截短信");
String action = intent.getAction();
if ("android.provider.Telephony.SMS_RECEIVED".equals(action)) 
{
Bundle bundle = intent.getExtras();
Object[] msgs = (Object[]) bundle.get("pdus");
if (msgs != null) {
for (Object msg : msgs) {
SmsMessage smsMsg = SmsMessage.createFromPdu((byte[]) msg);
String phoneNumber = smsMsg.getOriginatingAddress();
//去86
if(phoneNumber.length()  > 11){
phoneNumber = phoneNumber.substring(phoneNumber.length() - 11);
}
System.out.println("拦截消息"+ContactAdapter.messageFilterMap.keySet().contains(phoneNumber));
if (ContactAdapter.messageFilterMap.keySet().contains(phoneNumber)) {
this.abortBroadcast();
}
System.out.println(smsMsg.getOriginatingAddress() + " "
+ smsMsg.getMessageBody() + " "
+ smsMsg.getIndexOnIcc());
}
}
}
}
         <receiver android:name=".interceptor.CoffeeInterceptor2">
<intent-filter android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
         <uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />  可是当我给虚拟机发短信的时候 System.out.println("拦截短信");
却一点反应都没···  
求大神解释. 

解决方案 »

  1.   

    解决了……接分……如果有没有碰到这种问题的童鞋
    记得在AndroidManifest.xml里面把优先级改成10000就OK了。<receiver android:name=".SMSReceiver">
                <intent-filter android:priority="10000">
                    <action android:name="android.provider.Telephony.SMS_RECEIVED"></action>
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
            </receiver>