关于Android短信拦截(三)

来源:互联网 发布:北京网络职业学院 编辑:程序博客网 时间:2024/06/01 07:30
package com.example.xxxx;import com.example.xxxx.R;import android.app.Activity;import android.content.ContentValues;import android.database.ContentObserver;import android.database.Cursor;import android.net.Uri;import android.os.Bundle;import android.os.Handler;public class ScreenTest extends Activity {public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);SmsContent content = new SmsContent(new Handler());// 注册短信变化监听this.getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, content);}class SmsContent extends ContentObserver {private Cursor cursor = null;public SmsContent(Handler handler) {super(handler);}@Overridepublic void onChange(boolean selfChange) {// 当短信表发送改变时,调用该方法super.onChange(selfChange);// 读取收件箱中指定号码的短信cursor = managedQuery(Uri.parse("content://sms/inbox"),new String[] { "_id", "address", "read" }," address=? and read=?",new String[] { "12345678901", "0" }, "date desc");if (cursor != null) {ContentValues values=new ContentValues();values.put("read", "1");// 修改短信为已读模式cursor.moveToFirst();while (cursor.isLast()) {// 更新当前未读短信状态为已读getContentResolver().update(Uri.parse("content://sms/inbox"),values, " _id=?",new String[] { "" + cursor.getInt(0) });cursor.moveToNext();}}// end of if}// end of public void}// end of class SmsContent}
拦截短信最简单的就是建个receiver接受<action android:name="android.provider.Telephony.SMS_RECEIVED" />
这个系统广播,之后
Bundle bundle = intent.getExtras();    Object messages[] = (Object[]) bundle.get("pdus");    SmsMessage smsMessage[] = new SmsMessage[messages.length];    for (int n = 0; n <messages.length; n++) {        smsMessage[n]=SmsMessage.createFromPdu((byte[]) messages[n]);    }


原创粉丝点击