本文實例為大家分享了Android創建發送和接收短信應用的簡單實現過程,供大家參考,具體內容如下
一、接收短信
項目的結構如下:一個簡單的接收和發送短信的功能

1、定義一個接收短信的廣播:當手機接收到一條短信的時候,系統會發出一條值為android.provider.Telephony.SMS_RECEIVED 的廣播,這條廣播里攜帶著與短信相關的所有數據。
// 接收短信的廣播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(); // 獲取發送方號碼    String fullMessage = "";    for (SmsMessage message : messages) {      fullMessage += message.getMessageBody(); // 獲取短信內容    }    textView.setText("address; " + address + ", message: " + fullMessage);    abortBroadcast();  }} 2、 注冊廣播,這里我們動態在代碼中注冊:
// 注冊接收廣播IntentFilter intentFilter1 = new IntentFilter();intentFilter1.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);intentFilter1.addAction("android.provider.Telephony.SMS_RECEIVED");messageReceiver = new MessageReceiver();registerReceiver(messageReceiver, intentFilter1);3、 聲明權限:
<uses-permission android:name="android.permission.SEND_SMS" /><uses-permission android:name="android.permission.RECEIVE_SMS" />
二、發送短信
1、 發送短信:用getDefault方法得到SmsManager對象,調用sendTextMessage方法發送短信
// 發送短信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服務,進程間的通信}我們具體了解一下sendTextMessage方法一個參數的含義:
public void sendTextMessage(String destinationAddress, String scAddress, String text,PendingIntent sentIntent, PendingIntent deliveryIntent)destinationAddress: // 目的地,也就是對方的手機號scAddress: // 服務中心地址,為空的話就是默認的SMSCtext: // 發送消息的具體內容sentIntent: // 當消息成功或者失敗發送時,就發起這個廣播deliveryIntent: // 當消息到達目的地時,就發起這個廣播
 2、 sentIntent的廣播:
// 發送短信的狀態廣播class MessageBroadcast extends BroadcastReceiver {  @Override  public void onReceive(Context context, Intent intent) {    // 一個10位數的號碼發送,也能成功,但是對方沒有接收短信。    if (getResultCode() == RESULT_OK) {      Toast.makeText(MainActivity.this, "發送成功!", Toast.LENGTH_SHORT).show();    } else {      Toast.makeText(MainActivity.this, "發送失敗!", Toast.LENGTH_SHORT).show();    }  }} 3、 deliveryIntent的廣播:
// 當消息被傳遞給收件人時 class DeliveryBroadcast extends BroadcastReceiver {  @Override  public void onReceive(Context context, Intent intent) {    Toast.makeText(MainActivity.this, "對方接收短信成功!", Toast.LENGTH_SHORT).show();  }}以上就是本文的全部內容,希望對大家的學習有所幫助。
新聞熱點
疑難解答