WAP PUSH解析(3) Android中實現

2021-08-27 01:18:40 字數 1709 閱讀 2422

田海立@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...