短信4.4相关AppOpsManager和SmsReceiver-action变化

相关代码 下载 http://download.csdn.net/detail/mwq30123/7368545 


1.短信有权限也不可以写入的问题

<uses-permission android:name="android.permission.WRITE_SMS" />

     原因:contentprovider中数据访问 多了一步校验

if (enforceReadPermission(callingPkg, uri) != AppOpsManager.MODE_ALLOWED) {

………..            }

AppOpsManager中定义了OP_WRITE_SMS默认值是MODE_IGNORED


解决:    AppOpsManager中定义了相应的操作控制MODE_IGNORED,MODE_ALLOWED,以及修改Op_mode的hide方法setMode,需要提供当前的PkgName和PkgUserID。

一次修改,终生有效。


2. 短信接收广播问题

SMS_RECEIVED_ACTION 广播,谁都可以收到,但不可中断

新增SMS_DELIVER_ACTION,只能由默认短信应用接收到


3.短信拦截问题

4.2以前的短信拦截,通过SMS_RECEIVED_ACTION广播,可以接收和解析短信,但是不能阻止短信被写入到SMS DB中


解决方案

广播接收到时间:

      time--1390795992234--            

      onReceive : SMS_RECEIVED

DB中短信记录时间

_ID 20 

ADDRESS 18651660481 /

DATE  1390795992270 /

DATE_SENT 1390795992000 /

BODY  …

一:根据time,sender,body去DB删除此条短信

二:Service中注册Observe监听Sms Content Onchanged 读取到最新的一条,执行相应的解析和删除操作。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值