亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1417 | 回復(fù): 0
打印 上一主題 下一主題

[Android] Android接收短信 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2015-05-27 14:21 |只看該作者 |倒序?yàn)g覽
Android收到短信時(shí)會(huì)廣播android.provider.Telephony.SMS_RECEIVED消息,因此只要定義一個(gè)Receiver,收聽該消息,就能接收短信。
  1. <receiver android:name=".smsReceiver" >
  2.     <intent-filter>  
  3.         <action android:name="android.provider.Telephony.SMS_RECEIVED" />
  4.     </intent-filter>
  5. </receiver>
復(fù)制代碼
還可以為intent-filter加上一個(gè)優(yōu)先級(jí):
  1. <intent-filter android:priority="100">
復(fù)制代碼
這樣,由于優(yōu)先級(jí)較高,應(yīng)用將先于系統(tǒng)接收到android.provider.Telephony.SMS_RECEIVED消息。

Java文件:
  1. package com.hzhi.smsReceiver;

  2. import java.text.SimpleDateFormat;
  3. import java.util.Date;

  4. import android.content.BroadcastReceiver;
  5. import android.content.Context;
  6. import android.content.Intent;
  7. import android.os.Bundle;
  8. import android.telephony.SmsMessage;
  9. import android.util.Log;

  10. public class smsReceiver extends BroadcastReceiver {
  11.     @Override
  12.     public void onReceive(Context context, Intent intent) {
  13.           // 短信內(nèi)容
  14.      StringBuilder strBody = new StringBuilder();
  15.          // 短信時(shí)間
  16.      String strTime = new String();
  17.          // 短信發(fā)件人
  18.      StringBuilder number = new StringBuilder();
  19.      SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
  20.      Bundle bundle = intent.getExtras();
  21.      if (bundle != null) {
  22.          Object[] _pdus = (Object[]) bundle.get("pdus");
  23.          SmsMessage[] message = new SmsMessage[_pdus.length];
  24.          for (int i = 0; i < _pdus.length; i++) {
  25.              message[i] = SmsMessage.createFromPdu((byte[]) _pdus[i]);
  26.           }
  27.          for (SmsMessage currentMessage : message) {
  28.              strBody.append(currentMessage.getDisplayMessageBody());
  29.              number.append(currentMessage.getDisplayOriginatingAddress());
  30.              strTime = formatter.format(new Date(currentMessage.getTimestampMillis()));
  31.          }
  32.          String smsBody = strBody.toString();
  33.          String smsNumber = number.toString();
  34.          Log.v("NUMBER=", smsNumber);
  35.          Log.v("TIME=", strTime);
  36.          Log.v("BODY=", smsBody);
  37.          // 取消消息
  38.          this.abortBroadcast();
  39.         }
  40.     }     
  41. }
復(fù)制代碼
接收到消息后,通過Intent.getExtras()方法獲得Intent的Extras(Bundle變量),再使用Bundle.get("pdus")得到短信數(shù)組。為什么是短信數(shù)組呢?這是因?yàn)橛行┒绦艃?nèi)容比較長,所以需要一個(gè)數(shù)組來存儲(chǔ)。對(duì)數(shù)組中的每一個(gè)元素,再分別取出短信內(nèi)容、短信來源號(hào)碼、短信時(shí)間。其中,這些元素的短信來源號(hào)碼和短信時(shí)間都是一樣的,短信內(nèi)容不一樣,需要拼接起來,構(gòu)成一條完整的短信的內(nèi)容。

最后,this.abortBroadcast()取消android.provider.Telephony.SMS_RECEIVED消息。如果為intent-filter設(shè)置了較高的優(yōu)先級(jí),應(yīng)用先于系統(tǒng)接收到android.provider.Telephony.SMS_RECEIVED消息,然后再將該消息丟棄,這樣,系統(tǒng)就不會(huì)收到android.provider.Telephony.SMS_RECEIVED消息,也不會(huì)發(fā)出短信的提示音、震動(dòng)等。如果沒有設(shè)置優(yōu)先級(jí),系統(tǒng)將首先收到android.provider.Telephony.SMS_RECEIVED消息,發(fā)出短信的提示音、震動(dòng)等,然后應(yīng)用再收到短信。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP