Android ContentObserver ---拦截短信并删除

class SMSDBObserver extends ContentObserver {

private Context ctx;

public SMSDBObserver(Handler handler, Context ctx) {
super(handler);
this.ctx = ctx;
}

@SuppressWarnings("static-access")
public void onChange(boolean selfChange) {
super.onChange(selfChange);
try {
// 准备系统短信收信箱的uri地址
Uri uri = Uri.parse("content://sms/inbox");
// 查询收信箱里所有的短信
Cursor isRead = ctx.getContentResolver().query(uri, null, "read=" + 0, null, null);
while (isRead.moveToNext()) {
//String phone = isRead.getString(isRead.getColumnIndex("address")).trim();
String body = isRead.getString(isRead.getColumnIndex("body")).trim();
Log.i("bindphone", "get the sms---->" + body);
if (body!=null && (body.indexOf("Vimi")!=-1) && (body.indexOf(App.bindphonenum)!=-1)) {
Log.i("bindphone", "get the validate sms---->" + body);
int id = isRead.getInt(isRead.getColumnIndex("_id"));
PalmmessagerService.instance.validateBindPhone(App.bindphonearea, App.bindphonenum);
ctx.getContentResolver().delete(Uri.parse("content://sms"), "_id=" + id, null);
holdsms = false;
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}

}





//开始监听验证短信
Handler handler = null;
if (smsobserver == null) {// 创建内容监听器 短信监听
try{
handler = new Handler();
}catch(Exception e){
Log.i("bindphone", "get handler error :" + e.getMessage());
}
smsobserver = new SMSDBObserver(handler, this);
}
if (!holdsms) {// 注册内容监听器,并指定内容监听器,监听那一个Uri的数据变化
Log.i("bindphone", "start monitor the sms");
this.getContentResolver().registerContentObserver(
Uri.parse("content://sms/"), true, smsobserver);
holdsms = true;
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值