欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android創(chuàng)建簡(jiǎn)單發(fā)送和接收短信應(yīng)用

 更新時(shí)間:2016年04月21日 16:19:31   投稿:lijiao  
收發(fā)短信應(yīng)該是每個(gè)手機(jī)最基本的功能之一了,即使是許多年前的老手機(jī)也都會(huì)具備這項(xiàng)功能,而Android 作為出色的智能手機(jī)操作系統(tǒng),自然也少不了在這方面的支持。今天我們開始自己創(chuàng)建一個(gè)簡(jiǎn)單的發(fā)送和接收短信的應(yīng)用,需要的朋友可以參考下

本文實(shí)例為大家分享了Android創(chuàng)建發(fā)送和接收短信應(yīng)用的簡(jiǎn)單實(shí)現(xiàn)過程,供大家參考,具體內(nèi)容如下

一、接收短信

項(xiàng)目的結(jié)構(gòu)如下:一個(gè)簡(jiǎn)單的接收和發(fā)送短信的功能

1、定義一個(gè)接收短信的廣播:當(dāng)手機(jī)接收到一條短信的時(shí)候,系統(tǒng)會(huì)發(fā)出一條值為android.provider.Telephony.SMS_RECEIVED 的廣播,這條廣播里攜帶著與短信相關(guān)的所有數(shù)據(jù)。

// 接收短信的廣播
class MessageReceiver extends BroadcastReceiver {
  @Override
  public void onReceive(Context context, Intent intent) {
    Bundle bundle = intent.getExtras();
    Object[] pdus = (Object[]) bundle.get("pdus"); // 提取短信消息
    SmsMessage[] messages = new SmsMessage[pdus.length];
    for (int i = 0; i < messages.length; i++) {
      messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
    }
    String address = messages[0].getOriginatingAddress(); // 獲取發(fā)送方號(hào)碼
    String fullMessage = "";
    for (SmsMessage message : messages) {
      fullMessage += message.getMessageBody(); // 獲取短信內(nèi)容
    }
    textView.setText("address; " + address + ", message: " + fullMessage);
    abortBroadcast();
  }
} 

2、 注冊(cè)廣播,這里我們動(dòng)態(tài)在代碼中注冊(cè):

// 注冊(cè)接收廣播
IntentFilter intentFilter1 = new IntentFilter();
intentFilter1.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
intentFilter1.addAction("android.provider.Telephony.SMS_RECEIVED");
messageReceiver = new MessageReceiver();
registerReceiver(messageReceiver, intentFilter1);

3、 聲明權(quán)限:

<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" /> 

二、發(fā)送短信

1、 發(fā)送短信:用getDefault方法得到SmsManager對(duì)象,調(diào)用sendTextMessage方法發(fā)送短信

// 發(fā)送短信
public void send(View view) {
  SmsManager smsManager = SmsManager.getDefault();
  String destinationAddress = "15527100207";
  String text = "我愛你!";

  Intent intent1 = new Intent(SENT_SMS_ACTION);
  PendingIntent sentIntent = PendingIntent.getBroadcast(this, 0, intent1, 0);
  Intent intent2 = new Intent(DELIVERY_SMS_ACTION);
  PendingIntent deliveryIntent = PendingIntent.getBroadcast(this, 0, intent2, 0);
  smsManager.sendTextMessage(destinationAddress, null, text, sentIntent, deliveryIntent); // aidl服務(wù),進(jìn)程間的通信
}

 我們具體了解一下sendTextMessage方法一個(gè)參數(shù)的含義:

public void sendTextMessage(String destinationAddress, String scAddress, String text,PendingIntent sentIntent, PendingIntent deliveryIntent)
destinationAddress: // 目的地,也就是對(duì)方的手機(jī)號(hào)
scAddress:     // 服務(wù)中心地址,為空的話就是默認(rèn)的SMSC
text:        // 發(fā)送消息的具體內(nèi)容
sentIntent:     // 當(dāng)消息成功或者失敗發(fā)送時(shí),就發(fā)起這個(gè)廣播
deliveryIntent:   // 當(dāng)消息到達(dá)目的地時(shí),就發(fā)起這個(gè)廣播

 2、 sentIntent的廣播:

// 發(fā)送短信的狀態(tài)廣播
class MessageBroadcast extends BroadcastReceiver {
  @Override
  public void onReceive(Context context, Intent intent) {
    // 一個(gè)10位數(shù)的號(hào)碼發(fā)送,也能成功,但是對(duì)方?jīng)]有接收短信。
    if (getResultCode() == RESULT_OK) {
      Toast.makeText(MainActivity.this, "發(fā)送成功!", Toast.LENGTH_SHORT).show();
    } else {
      Toast.makeText(MainActivity.this, "發(fā)送失敗!", Toast.LENGTH_SHORT).show();
    }
  }
} 

3、 deliveryIntent的廣播:

// 當(dāng)消息被傳遞給收件人時(shí) 
class DeliveryBroadcast extends BroadcastReceiver {
  @Override
  public void onReceive(Context context, Intent intent) {
    Toast.makeText(MainActivity.this, "對(duì)方接收短信成功!", Toast.LENGTH_SHORT).show();
  }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。

相關(guān)文章

最新評(píng)論