Android 监听短信(同时监听广播和数据库)(2)

//根据你的拦截策略,判断是否不对短信进行操作;将短信设置为已读;将短信删除
    //TODO
    Message msg=smsHandler.obtainMessage();
    _smsInfo.action=2;//0不对短信进行操作;1将短信设置为已读;2将短信删除
    msg.obj=_smsInfo;
    smsHandler.sendMessage(msg);
   }
  }
 
  if(mCursor!=null)
  {
   mCursor.close();
   mCursor=null;
  }
 }
}

四、短信处理类

import android.content.ContentValues;
import android.content.Context;
import android.net.Uri;
import android.os.Handler;
import android.os.Message;

/**
 * @author 短信的处理
 *
 */
public  class SmsHandler extends Handler
{
 private Context  mcontext;
 
 public SmsHandler(Context  context)
 {
  this.mcontext=context;
 }
 
 @Override
 public void handleMessage(Message msg)
 {
  SmsInfo smsInfo=(SmsInfo)msg.obj;
 
  if(smsInfo.action==1)
  {
   ContentValues values = new ContentValues();
      values.put("read", "1");
      mcontext.getContentResolver().update(Uri.parse("content://sms/inbox"), values, "thread_id=?", new String[]{smsInfo.thread_id});
  }
  else if(smsInfo.action==2)
  {
   Uri mUri=Uri.parse("content://sms/");
   mcontext.getContentResolver().delete(mUri, "_id=?", new String[]{smsInfo._id});
  }
 } 
}

五、SmsInfo 数据结构

/**
 * 主要用于短信拦截
 * @author Administrator
 *
 */
public class SmsInfo {
 public String _id="";
 public String thread_id = "";
 public String smsAddress = "";
 public String smsBody = "";
 public String read="";
 public int action=0;//1代表设置为已读,2表示删除短信
}

短信拦截大概就是如此了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/0f42814423776dca0a1dfbc56f9b48b2.html