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