線性佈局:傳送簡訊
阿新 • • 發佈:2018-11-07
把資訊傳送到另一臺模擬器
主佈局資原始檔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(); } }