Android中实现短信监听比较简单,只需要定义一个类,让这个类继承 ContentObserver ,复写SmsObserver函数,并复写OnChange()函数,该函数只要检测到有短信发送就会被调用。
我们只需要在该函数中定义一个游标 Cursor 去查询 Uri接口:content:sms//outbox 即可。实现代码如下:
// 监听发送的短信 private final class SmsObserver extends ContentObserver { public SmsObserver(Handler handler) { super(handler); } //检测到短信就回调用onChange 函数 public void onChange(boolean selfChange) { ContentResolver resolver = getContentResolver(); // 查到发出的短信, Uri uri = Uri.parse("content://sms/outbox"); Cursor cursor = resolver.query(uri, new String[] { "date", "address", "body" }, null, null, "_id desc limit 1"); flag = flag_new; flag_new = cursor.moveToNext(); boolean te1 = fg; // 如果上升沿检测到有短信发出 fg = ((!flag) && (flag_new)); boolean te2 = fg; fg_more = (!te1) && (te2); } }
不过当监听到有短信发送出去时,OnChange函数会被多次调用,这个问题必须注意。