1、利用ContentObserver监听短信
内容观察器ContentObserver给目标内容注册一个观察器,目标内容的数据一旦发生改变,观察器规定好的动作马上触发,从而执行开发者预定义的代码。
参数原理:
notifyForDescendents 通知子孙后代
false:表示精确匹配,即只匹配Uri。
true可以表示同时匹配其派生的Uri
假设UriMatcher 里注册的Uri共有以下类型
1、content://AUTHORITIES/table
2、content://AUTHORITIES/table/#
3、content://AUTHORITIES/table/subtable
假设我们当前需要的Uri为content://AUTHORITIES/stuent:
如果我们需要发生变化的Uri为3
当notifyForDescendents为false,那么该ContentObserver就监听不到
麻烦的地方:
来到一条短信,onChange可能会执行两到三次
mUri===content://sms/raw/20
mUri===content://sms/inbox/20
android 7.0以上的系统,点击标记为已读,也会调用一次
mUri == content://s