Android7.0 Messaging源码分析(5) - MMS类库篇
http://blog.youkuaiyun.com/wenping1980/article/details/53215679
Android 短信模块分析(一) Mms功能概述及源码目录结构分析
http://blog.youkuaiyun.com/t12x3456/article/details/9293775
Android6.0的SMS(短信)源码分析–短信发送
http://m.blog.youkuaiyun.com/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
本文深入剖析了Android系统的短信功能实现原理,特别是针对Android7.0版本中MMS类库的功能进行详细解读,并探讨了短信发送流程及如何决策是否将发送的短信记录写入数据库。
527

被折叠的 条评论
为什么被折叠?



