編輯:關於Android編程
android上短信功能基本很穩定了,一般很少維護,所以感覺總是很陌生%>_<%。這裡總結下4.2.1上原生Mms用到的短信接口,以便再次基礎上記憶。android的framework對上層短信提供的接口基本都在SmsManager和SmsMessage。個人認為前者提供了發送獲取短信等功能,後者提供了計算長度解析短信等針對了短信內容的功能。
先說說SmsManager這個類:
sendTextMessage()根據後面的調用,可以知道這個是協議上發送一條短信的方法。協議上的一條短信是指一條短信不能超過140個字節,即70個漢字。這個方法在原生短信中沒有調用,盡在該類的另外一個方法中有用到。
divideMessage()講一個字符串根據協議分成若干個短信段。這個方法會在SmsSingleRecipientSender.java,原生短信模塊中最終發送短信的類中用到。稍微注意下這個方法就能發現一條長短信中,從第二個分斷短信開始,可供編輯內容空間變小了。
sendMultipartTextMessage()android原生代碼中,應用層調用的發短信方法。從這裡開始就和應用沒有關系了。
sendDataMessage()從字面意思可以理解到其意思,但是沒有見在哪裡用過,先知道有這個方法存在。
copyMessageToIcc()也沒有看到在哪裡用到,同樣先知道。
deleteMessageFromIcc()這個在短信數據庫裡面有用到,刪除sim卡上短信。
updateMessageOnSim()也很少用到。
getAllMessagesFromIcc()還是在短信數據庫中用到。
後面的基本都和短信功能關系不大,就不說明了。我們可以看出從這裡我們只要記住並且熟悉sendMultipartTextMessage()和divideMessage()兩個接口就行了,如果真有必要寫發送短信功能代碼,這兩個接口就足夠了。
再說說SmsMessage。這個類可以說是根據協議來一個個實現相關方法的。注釋裡面也說明了其參考了TS 23.038協議。
createFromPdu()根據注釋可以知道是在收到短信的情況下,講下面發上來廣播中的內容解析成短信。原生短信中用的是該方法的重載方法。
createFromPdu()這個方法的重載方法,參數列表中多了一個短信類型。因為GSM和CDMA短信解碼方式不一樣。下層在往上層發送廣播的時候會提供當前短信類型,根據這個類型就可以知道是用GSM還是CDMA去解析短信。
newFromCMT(),newFromParcel(),createFromEfRecord(),getTPLayerLengthForPDU()這幾個方法一般不常用,大概有個印象就行。
calculateLength()計算當前短信按照協議打包之後的信息,包括短信需要打包成幾段,最後一段還剩多少空間等內容。在編輯短信界面顯示剩余字數就有用到。
fragmentText()這個在SmsManager中和divideMessage用到,就不多說了。這之後的方法都是get方法,返回短信類型中的一些標記。
最後補充一句,有些方法和作用域前面有@hide字段,表示不對外公開api,但是系統內部是可以使用的。不過使用反射貌似也能用。:)短信中常用到的接口就整理到這裡,方便自己以後記憶。希望自己能帶著這些去看看3GPP協議,:)。
今天晚上被弟弟告知他在子線程中更新了UI,問我是不是版本的問題,我果斷說是他的代碼寫錯了,不過分分鐘被打臉,經過我一番仔細的探查最終發現了原因,或許這件事的結果不是多麼
紅米手機快捷鍵使用技巧匯總。紅米手機,在市場的位置也慢慢變重要了,價格低,又實惠,又好用。那朋友們,你們知道它有那些快捷鍵的嗎?那就讓小編來跟大家詳細的介紹
前言??在Android設備中,我們經常會看到與系統或者應用相關的清除功能有:清除數據、清除緩存、一鍵清理,這麼多清除功能對於一個程序猿就夠難理解了,偏偏很多安卓設備上都
從2015年下半年開始,Google為了簡化Android的開發工作,不再支持對Eclipse等開發工具的更新,主推由Google開發的AndroidStudio開發工具