中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android的SMS push怎么使用

發布時間:2021-12-18 16:57:05 來源:億速云 閱讀:179 作者:iii 欄目:移動開發

這篇文章主要介紹“Android的SMS push怎么使用”,在日常操作中,相信很多人在Android的SMS push怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Android的SMS push怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

短信(SMS)Push 和 Ip push是比較常見的兩種push方式。  

本篇主要簡單說說Sms push。

Sms push的原理:  

sms  push是通過發送二進制短信到移動終端,來達到通知終端的目的。客戶端攔截這類短信,分析短信PDU的數據,然后采取相應的操作。push短信是通過 Wap push來承載的。其內容包括頭部和數據兩部分,頭部中應該含有目的端口和原端口號(可類比IP報文)。

由于發送短信需要運營商的支持,比如移動的郵件推送網關(GEGW:GPRS Email Gateway),依賴性比較強。

Android客戶端攔截短信處理:

客戶端靜態注冊一個廣播接收器,即使應用不在運行,廣播接收器也能攔截短信。

<receiver android:name=".service.receiver.MyBroadcastReceiver">            <intent-filter android:priority="1000">                <action android:name="android.intent.action.DATA_SMS_RECEIVED" />                <data android:scheme="sms" android:host="localhost" android:port="16001" />            </intent-filter>

這樣當push短信下發時(監聽到端口16001的數據),系統發起Intent激活廣播接收器,廣播接受器在其事件回調函數中進行處理

@Override     public void onReceive(Context context, Intent intent) {         String action = intent.getAction();         if (TextUtils.equals(action, "android.intent.action.DATA_SMS_RECEIVED")) {             handleDataSmsReceived(context, intent);         } }

在處理函數handleDataSmsReceived中,獲取pdu數據并解析,了解服務器的數據發生何種變化,客戶端可以進行相應處理。

簡易實現代碼如下:

private void handleDataSmsReceived(Context context, Intent intent) {         Uri uri = intent.getData();         int port = uri.getPort();//接受端口 16001         SmsMessage[] msgs = getMessagesFromIntent(intent);         String senderNumber = msgs[0].getOriginatingAddress();//短信發送方的電話號碼         int type =  parse(msgs)//解析 pdu的業務部分數據,根據與服務器交互的協議去解         switch(type){              //不同的情況分類處理         } }

獲取的短信的方法

private static final SmsMessage[] getMessagesFromIntent(Intent intent) {         Object[] messages = (Object[]) intent.getSerializableExtra("pdus");         byte[][] pduObjs = new byte[messages.length][];         for (int i = 0; i < messages.length; i++) {             pduObjs[i] = (byte[]) messages[i];         }         byte[][] pdus = new byte[pduObjs.length][];         int pduCount = pdus.length;         SmsMessage[] msgs = new SmsMessage[pduCount];         for (int i = 0; i < pduCount; i++) {             pdus[i] = pduObjs[i];             msgs[i] = SmsMessage.createFromPdu(pdus[i]);         }         return msgs;     }

到此,關于“Android的SMS push怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湘潭县| 彭水| 黄大仙区| 麟游县| 光泽县| 行唐县| 雷山县| 保德县| 象州县| 民勤县| SHOW| 明光市| 清新县| 甘德县| 乳源| 漾濞| 阿拉善右旗| 临澧县| 靖安县| 蕲春县| 望奎县| 舒兰市| 黄大仙区| 万宁市| 安顺市| 十堰市| 临西县| 武乡县| 洛扎县| 山阳县| 富裕县| 葵青区| 茂名市| 大城县| 益阳市| 昔阳县| 攀枝花市| 泗阳县| 绥阳县| 双城市| 荥阳市|