SMS_UI---Layout
conversation_list_screen.xml 显示对话列表
conversation_list_actionbar.xml 未读对话列表的选中高亮 id:unread_conv_count
conversation_list_multi_select_actionbar.xml 已选会话列表的选中高亮 id:selected_conv_count
conversation_list_item.xml 每组会话在列表中都是图片+from+date+subject的形式
compose_message_activity.xml 编辑框 发送(id:send_button_sms) 全选 取消 删除
SMS---Src
(1)UI入口
ComposeMessageActivity extends Activity(com.android.mms.ui)
onCreate()
initMessageSettings()加载setting中的设置
initResourceRefs() 初始化UI控件
mSendButtonSms = (ImageButton) findViewById(R.id.send_button_sms);
mSendButtonSms.setOnClickListener(this);
| (mUiHander表示一个主线程的Handle对象)
onClick(View v) --> mUiHandler.sendEmptyMessageDelayed(MSG_RESUME_SEND_BUTTON, RESUME_BUTTON_INTERVAL);
等待指定的时间(1秒)之后发送消息到子线程
sendMessage()允许你处理Message对象(Message里可以包含数据)sendEmptyMessage()只能放数据
|
SaveMsgThread extends Thread 启动消息队列机制
(2)待传送的信息
WorkingMessage (com.android.mms.data)即将发送的短信类
(3)发送信息
SmsMessageSender implements MessageSender(com.android.mms.transaction)为短信的发送作准备,使sms进入消息队列,分离接收人
SmsSingleRecipientSender extends MessageSender 发送一条短信,最终用framework的SmsManager来发送信息
(4)接收信息
SmsReceiver extends BroadcastReceiver(com.android.mms.transaction)请求sms service的入口
PrivilegedSmsReceiver extends SmsReceiver(com.android.mms.transaction)接收短信的类
SmsReceiverService extends Service(com.android.mms.transaction)sms的处理中心,处理信息的 send/receive,处理一些来自framework层的的通知。
MessageStatusReceiver extends BroadcastReceiver(com.android.mms.transaction)捕获信息,并读取信息的状态
SMS---解读
(1)发送信息的流程
用户在ComposeMessageActivity中new一个WorkingMessage对象
WorkingMessage又new一个SmsMessageSender对象
PendingIntent是一个发送异步intent的类
本质上就是使用MessageSender接口发送信息