首页 > 代码库 > Android KK上如何让三方APK发送的SMS不显示出来

Android KK上如何让三方APK发送的SMS不显示出来

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

Android KK上如何让三方APK发送的SMS不显示出来