1. 程式人生 > >線性佈局:傳送簡訊

線性佈局:傳送簡訊

把資訊傳送到另一臺模擬器
在這裡插入圖片描述
主佈局資原始檔activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="20dp">

    <TextView
        android:id="@+id/tv_input_phone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/input_phone"
        android:textSize="18sp" />

    <EditText
        android:id="@+id/edt_phone"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="@string/input_phone"
        android:inputType="phone" />

    <TextView
        android:id="@+id/tv_input_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/input_message"
        android:textSize="18sp" />

    <EditText
        android:id="@+id/edt_message"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="@string/input_message"
        android:inputType="textMultiLine"
        android:lines="6" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal">

        <Button
            android:id="@+id/btn_send"
            android:layout_width="96dp"
            android:layout_height="wrap_content"
            android:onClick="doSend"
            android:text="@string/send" />

        <Button
            android:id="@+id/btn_clear"
            android:layout_width="92dp"
            android:layout_height="wrap_content"
            android:onClick="doClear"
            android:text="@string/clear" />

        <Button
            android:id="@+id/btn_back"
            android:layout_width="96dp"
            android:layout_height="wrap_content"
            android:onClick="doBack"
            android:text="@string/back" />
    </LinearLayout>

</LinearLayout>

主介面類MainActivity

package com.example.myapplication03;

import android.app.Activity;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.EditText;
import java.util.List;

public class MainActivity extends Activity {
    private EditText edtPhone;
    private EditText edtMessage;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 利用佈局資原始檔設定使用者介面
        setContentView(R.layout.activity_main);

        // 通過資源標識獲得控制元件例項
        edtPhone = (EditText) findViewById(R.id.edt_phone);
        edtMessage = (EditText) findViewById(R.id.edt_message);
    }

    /**
     * 傳送按鈕單擊事件處理方法
     */
    public void doSend(View view) {
        //獲取使用者輸入的電話號碼
        String strPhone = edtPhone.getText().toString().trim();
        //獲取使用者輸入的簡訊內容
        String strMessage = edtMessage.getText().toString().trim();
        //獲取預設的簡訊管理器物件
        SmsManager smsManager = SmsManager.getDefault();
        //建立傳送簡訊的意圖
        PendingIntent sentIntent = PendingIntent.getBroadcast(this,0,new Intent(),0);
        //根據簡訊長度決定是否要分條傳送
        if(strMessage.length()>120){
            List<String> messageList = smsManager.divideMessage(strMessage);
            for (String message : messageList) {
                /**
                 * sendTextMessage(destinationAddress, scAddress, text, sentIntent, deliveryIntent);
                 * 引數1:destinationAddress 對方手機號碼
                 * 引數2:scAddress 簡訊中心號碼,一般設定為空
                 * 引數3:text 簡訊內容
                 * 引數4:sentIntent 判斷簡訊是否傳送成功,
                 *      如果你沒有SIM卡,或者網路中斷,則可以通過這個intent來判斷。
                 *      注意強調的是“傳送”動作是否成功。至於對於對方是否收到,另當別論。
                 * 引數5:deliveryIntent 當簡訊傳送到收件人時,會收到這個deliveryIntent。即強調了“傳送”後的結果。
                 */
                smsManager.sendTextMessage(strPhone, null, message, sentIntent, null);
            }
        }else{
            //利用簡訊管理器的相應方法傳送一條簡訊
            smsManager.sendTextMessage(strPhone,null,strMessage,sentIntent,null);
        }
    }

    /**
     * 清除按鈕單擊事件處理方法
     */
    public void doClear(View view) {
        // 清除電話號碼編輯框
        edtPhone.setText("");
        // 清除簡訊編輯框
        edtMessage.setText("");
        // 讓電話號碼編輯框獲得焦點
        edtPhone.requestFocus();
    }

    /**
     *  返回按鈕單擊事件處理方法
     */
    public void doBack(View view) {
        finish();
    }
}