田海立@csdn
2012-06-30
android中已經實現了sms pdu的解析、wsp的解析,得到了wbxml封裝的資料,並發出了廣播"android.provider.telephony.wap_push_received"。原生實現中還沒有對mimetype型別為wap push si 和wap push sl 的該廣播的響應,亦即,缺少對wbxml封裝的push資料的處理。本文通過分析總結android中的原生實現,給出wap push si/sl的實現參考。
一、android中的原生實現
筆者已經有幾篇文章分別描述sms的接收處理過程,sms pdu / wsp / wbxml的封裝格式。
這裡總結一下:
ril中收到new sms,呼叫android.telephony.smsmessage.newfromcmt() decode pdu,結果放入smsmessage中。android.telephony.smsmessage.newfromcmt() 根據**的型別,用com.android.internal.telephony.gsm.smsmessage或com.android.internal.telephony.cdma.smsmessage的newfromcmt()真正的實現pdu decode;
stringmimetype, int headerstartindex, int headerlength)
關注一下發出廣播的intent引數:
header: wsp解析出來的header,用來識別contenttype的,已經有了mimetype,這個已經沒什麼意義;
data: wbxml封裝的si或sl xml資料。
要實現完整的wap push,只要:
收到的廣播中實現對wbxml封裝的si/sl解析,並插入訊息庫。
二、處理"android.provider.telephony.wap_push_received"
啟動乙個asynctask在後台解析wbxml封裝的pushdata,解析出pushdata (xml格式);
解析xml格式的pushdata,得到url/content/signal等資訊;
根據3的結果,選擇加入message資料庫,並通知使用者。
這裡面關鍵點是wbxml格式的解析,可以參考miui rom
接收wap push
簡訊的補丁
。這是為小公尺手機做的wap push解析實現,裡面有wbxml解析的源**可參考。不過這裡面對wbxml中定義的tag和attribute的支援不全,讀者可根據自己需求加入所需要的支援。
參考資料
1.google android source2.3.7_r1
android原生實現源**
2.wap binary xmlcontent format
wbxml標準,必看!
3.miui rom
接收wap push
簡訊的補丁
4.wap push over sms
wap push over sms的大致介紹(英文)
5.wap push sms encoding
wap push service indication封裝例項(英文)
傳送wap push的工具。是使用說明,雖然沒實現細節,但可參考wbxml的token和attribute對照。(英文)
WAP PUSH解析(3) Android中實現
android中已經實現了sms pdu的解析 wsp的解析,得到了wbxml封裝的資料,並發出了廣播 android.provider.telephony.wap push received 原生實現中還沒有對mimetype型別為wap push si 和wap push sl 的該廣播的響應,...
小試3解析
確實需要思考。1.傳球 細加分析即可知結果為c 3,n include includeusing namespace std int n int main 2.矩形交換 顯然直接模擬是不可取的。我們可以令a i i,表示第i行是原先的第a i 行 那麼在交換行的時候,我們只需交換對應的a的值即可。i...
xml解析(3) xml之SAX解析
sax的全稱是 apis for xml,也即xml簡單應用程式介面。與dom不同,sax提供的訪問模式是一種順序模式,這是一種快速讀寫xml資料的方式。當使用sax分析器對xml文件進行分析時,會觸發一系列事件,並啟用相應的事件處理函式,應用程式通過這些事件處理函式實現對xml文件的訪問,因而sa...