android 4+版本需要用户主动添加broadReceiver
1.清单文件
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.smslistener" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <uses-permission android:name="android.permission.RECEIVE_SMS"/> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".SmsReceiver"> <!-- priority 优先级 最高:1000 最低 : -1000 --> <intent-filter android:priority="1000"> <action android:name="android.provider.Telephony.SMS_RECEIVED"/> </intent-filter> </receiver> </application> </manifest>
2.mainActivity
package com.example.smslistener; import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); finish(); } }
4.SmsReceicer
package com.example.smslistener; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.telephony.SmsMessage; public class SmsReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { System.out.println("短信来了..."); //获取短信 Object[] pdus = (Object[])intent.getExtras().get("pdus"); for(Object pdu:pdus) { SmsMessage sms = SmsMessage.createFromPdu((byte[])pdu); String body = sms.getMessageBody(); String address = sms.getOriginatingAddress(); System.out.println("body:"+body); System.out.println("address:"+address); if("4444".equals(address)) { //拦截短信 abortBroadcast(); } } } }