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;
}