Android短信收发

来源:互联网 发布:如何ping ip 的端口 编辑:程序博客网 时间:2024/05/16 12:26

Android7.0 Messaging源码分析(5) - MMS类库篇
http://blog.csdn.net/wenping1980/article/details/53215679

Android 短信模块分析(一) Mms功能概述及源码目录结构分析
http://blog.csdn.net/t12x3456/article/details/9293775

Android6.0的SMS(短信)源码分析–短信发送
http://m.blog.csdn.net/omnispace/article/details/52687184

关键代码:

短信发送:
SMSDispatcher.java (ImsSMSDispatcher)
persistSentMessageIfRequired 决策是否写数据库
private Uri persistSentMessageIfRequired(Context context, int messageType, int errorCode) {
1419 if (!mIsText || !mPersistMessage ||
1420 !SmsApplication.shouldWriteMessageForPackage(mAppInfo.packageName, context)) {
1421 return null;
1422 }

insert(Telephony.Sms.Sent.CONTENT_URI 插入数据库动作

sendRawPdu 这里调用者信息
String[] packageNames = pm.getPackagesForUid(Binder.getCallingUid());
shouldWriteMessageForPackage 根据包决定是否写数据库

isms.aidl:
* @param persistMessageForNonDefaultSmsApp whether the sent message should
153 * be automatically persisted in the SMS db. It only affects messages sent
154 * by a non-default SMS app. Currently only the carrier app can set this
155 * parameter to false to skip auto message persistence.
156 */
157 void sendTextForSubscriber(in int subId, String callingPkg, in String destAddr,
158 in String scAddr, in String text, in PendingIntent sentIntent,

smsmanager:
sendTextMessageInternal
persistMessage 参数

SMSDispatcher.java 处理回调
handleSendComplete

原创粉丝点击