关于Android短信拦截(三)

  
  
  
  
  1. package com.example.xxxx; 
  2.  
  3. import com.example.xxxx.R; 
  4.  
  5. import android.app.Activity; 
  6. import android.content.ContentValues; 
  7. import android.database.ContentObserver; 
  8. import android.database.Cursor; 
  9. import android.net.Uri; 
  10. import android.os.Bundle; 
  11. import android.os.Handler; 
  12.  
  13. public class ScreenTest extends Activity { 
  14.     public void onCreate(Bundle savedInstanceState) { 
  15.         super.onCreate(savedInstanceState); 
  16.         setContentView(R.layout.main); 
  17.         SmsContent content = new SmsContent(new Handler()); 
  18.         // 注册短信变化监听 
  19.         this.getContentResolver().registerContentObserver( 
  20.                 Uri.parse("content://sms/"), true, content); 
  21.     } 
  22.  
  23.     class SmsContent extends ContentObserver { 
  24.         private Cursor cursor = null
  25.  
  26.         public SmsContent(Handler handler) { 
  27.             super(handler); 
  28.         } 
  29.         @Override 
  30.         public void onChange(boolean selfChange) {// 当短信表发送改变时,调用该方法 
  31.             super.onChange(selfChange); 
  32.             // 读取收件箱中指定号码的短信 
  33.             cursor = managedQuery(Uri.parse("content://sms/inbox"), 
  34.                     new String[] { "_id""address""read" }, 
  35.                     " address=? and read=?"
  36.                     new String[] { "12345678901""0" }, "date desc"); 
  37.  
  38.             if (cursor != null) { 
  39.                 ContentValues values=new ContentValues(); 
  40.                 values.put("read""1");// 修改短信为已读模式 
  41.                 cursor.moveToFirst(); 
  42.                 while (cursor.isLast()) {// 更新当前未读短信状态为已读 
  43.                     getContentResolver().update(Uri.parse("content://sms/inbox"), 
  44.                         values, " _id=?",new String[] { "" + cursor.getInt(0) }); 
  45.                     cursor.moveToNext(); 
  46.                 } 
  47.             }// end of if 
  48.         }// end of public void 
  49.     }// end of class SmsContent 

拦截短信最简单的就是建个receiver接受<action android:name="android.provider.Telephony.SMS_RECEIVED" />

这个系统广播,之后

  
  
  
  
  1. Bundle bundle = intent.getExtras(); 
  2.     Object messages[] = (Object[]) bundle.get("pdus"); 
  3.     SmsMessage smsMessage[] = new SmsMessage[messages.length]; 
  4.     for (int n = 0; n <messages.length; n++) { 
  5.         smsMessage[n]=SmsMessage.createFromPdu((byte[]) messages[n]); 
  6.     } 

 

你可能感兴趣的:(android,APP,iPhone)