Android基础开发-读写短信

本文详细介绍了如何在Android应用中使用ContentObserver监听短信变化,包括Uri匹配策略,以及在Android7.0以上系统中点击标记已读时可能触发onChange多次的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值