android 接收簡訊流程

2021-06-07 20:12:14 字數 1212 閱讀 5163

簡訊來了之後framework會傳送廣播 「android.provider.telephony.sms_received」

---------------------------------------privilegedsmsreceiver---------------------

此時,privilegedsmsreceiver會接受到該廣播,呼叫父類smsreceiver的onreceivewithprivilege()方法

此方法內獲取乙個wake lock 然後啟動smsreceiverservice服務

---------------------------------------smsreceiverservice------------------------

啟動該服務後,會呼叫onstartcommand方法,該方法以之前傳來的intent為message的obj傳送一條message

在handlemessage方法裡面通過intent判斷後執行相應的操作,如handlesmssent,handlesmsreceived,

handlebootcompleted,handleservicestatechanged

接受到簡訊時當然執行handlesmsreceived方法

該方法內通過intents.getmessagesfromintent(intent)方法從intent裡面取出message

然後通過insertmessage(this, msgs)方法插入簡訊insertmessage裡通過呼叫storemessage方法

storemessage方法執行values.put(inbox.body, sms.getdisplaymessagebody())方法就可以將

簡訊以contentvalues的形式插入資料庫。

insertmessage方法如果插入成功將會返回插入簡訊的uri,如果此uri不為null,說明已經插入資料庫,於是

執行messagingnotification.updatenewmessageindicator(this, true);

該方法則會根據簡訊的狀態,發出提示音或震動,也可以根據設定notification

自此,一條新資訊就成功接受了。

簡訊的所有提示都是通過notification來提示的,所以當從設定裡面把notification的震動關閉,設為靜音的話,

無所簡訊設定裡面怎麼設定提示方式都沒用。因為簡訊提示就是乙個普通的notification

android傳送與接收超長簡訊

android接收傳送簡訊,支援的最大字元數是70個,實際是67個字元,如果傳送的簡訊超過了該數目,那就實現方法不一樣了。接收長簡訊 傳送長簡訊 利用smsmanager的 public void sendmultiparttextmessage string destinationaddress,...

android超簡單簡訊接收 中級編

簡訊 short message service,簡稱sms 是使用者通過手機或其他電信終端直接傳送或接收的文字或數字資訊,使用者每次能接收和傳送簡訊的字元數,是160個英文或數字字元,或者70個中文字元。現在我通過emulator control向5554傳送簡訊,如果5554收到簡訊將會提示,下...

Android 使用廣播接收者攔截簡訊

如果你想攔截別人接收到的簡訊,達到你不可告人的目的,那麼本節內容可以實現你的需求。當系統收到簡訊時,會發出乙個action名稱為android.provider.telephony.sms received的廣播intent,該intent存放了接收到的簡訊內容,使用名稱 pdus 即可從inten...