监听短信接收
1.Android系统在收到短信的时候会发送一条有序广播,我们如果定义一个接收者接收这个广播,就可以得到短信内容,也可以拦截短信
2.定义广播接收者接收广播android.provider.Telephony.SMS_RECEIVED
3.在onReceive方法内部调用Intent的getExtras()获取其中pdus字段,得到一个Object[],其中每一个元素都是一个byte[]
4. 通过SmsMessage类的createFromPdu方法创建SmsMessage对象
5.从SmsMessage对象中即可获取发送者号码、短信内容、发送时间等信息
6.需要接收短信权限:<uses-permission android:name="android.permission.RECEIVE_SMS"/>
7.Android系统中收到短信的通知是一个有序通知,我们如需拦截垃圾短信,可以配置较高的priority,收到信息进行判断是否abortBroadcast()
xml 配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | <?xml version="1.0" encoding="utf-8"?> package="cn.test" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <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"> <intent-filter android:priority="999"> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver> </application> <uses-sdk android:minSdkVersion="8" /> <!-- 接收短信权限--> <uses-permission android:name="android.permission.RECEIVE_SMS"/> </manifest> |
java代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | public class SmsReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { Object[] pdus = (Object[]) intent.getExtras().get("pdus"); for (Object pdu : pdus) { //创建一个短信 SmsMessage sms = SmsMessage.createFromPdu((byte[]) pdu); //获取发送手机号 String address = sms.getOriginatingAddress(); //获取短信的内容 String body = sms.getMessageBody(); //获取短信的时间 String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(sms.getTimestampMillis())); System.out.println(time); System.out.println(address); System.out.println(body); } //中断手机接收操作 abortBroadcast(); } } |
浙公网安备 33010602011771号