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. Android中发送短信和彩信
  2. android使用Intent操作拨打电话和发送短信
  3. android > 读取http html 内容
  4. android 定时发送短信实现
  5. Android 采用SAX解析XML内容 【学习记录】
  6. Android 简单的网络变化监听器
  7. Android实现动态显示或隐藏密码输入框的内容

随机推荐

  1. Android Ftp 简单上传下载
  2. Android 利用handler传递数据
  3. android 图片圆角处理
  4. Android 7.0调用系统相机返回路径问题
  5. Gradle 的配置
  6. TextWatcher监控EditText (转)
  7. 检测android机器是否有GPS模块
  8. Android调用系统播放器
  9. 20.Android读唯一的设备号IMEI
  10. Android中获取屏幕长宽的方法