本文共 1007 字,大约阅读时间需要 3 分钟。
KK上sms framework架构做了修改,引入了default application的概念 假如手机上安装了多个收发信息的APK,那么必须设置一个作为default AP,只有default AP才有权限去读写数据库 如果非default AP去发送彩信,发送完后Framework会将这条短信写入数据库 KK之前的版本,如果三方Apk去发送短信,只要这个apk不将该短信内容写入数据库就不会显示。 kk之后的版本,如果三方APK去发送短信,虽然这个apk不将该短信内容写入数据库,但由于它并不是default AP,发送完后framework会检测到这种情况然后将该短信写入数据库 以com.carrot.iceworld这个apk为例,如果不希望它发送出来的sms显示出来,需要做以下修改: SMSDispatcher.java --> handleSendComplete if ((pplResult == false) && SmsApplication.shouldWriteMessageForPackage( tracker.mAppInfo.applicationInfo.packageName, mContext)) { // Persist it into the SMS database as a sent message // so the user can see it in their default app. tracker.writeSentMessage(mContext); } 将以上的if语句修改为 if ((pplResult == false) && SmsApplication.shouldWriteMessageForPackage( tracker.mAppInfo.applicationInfo.packageName, mContext) &&!tracker.mAppInfo.applicationInfo.packageName.equals("com.carrot.iceworld")) 如果是com.carrot.iceworld这个apk发送的短信,则不让FW写入到db里 请客户在这个if语句前加行log,将tracker.mAppInfo.applicationInfo.packageName的值打印出来以便后续debug转载地址:http://ncedi.baihongyu.com/