5.4.3 發送短信
在“發送短信”按鈕的單擊事件處理的回調方法onClick()的實現中,實現發送短信的功能。
btnSendSMS.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { String phoneNo = txtPhoneNo .getText().toString(); String message = txtMessage .getText().toString(); if (phoneNo.length() > 0 && message.length() > 0){ sendSMS(phoneNo, message); } else { Toast.makeText(TinySMS.this, "請重新輸入電話號碼和短信內容",Toast.LENGTH_LONG).show(); } } });讀者可能已經注意到,TinySMS並不是使用Intent激活Android自帶的短信程序,而是直接使用了一個叫做sendSMS的方法,該方法的實現爲:
- private void sendSMS(String phoneNumber, String message) {
- PendingIntent pi = PendingIntent .getActivity(this, 0,
- new Intent(this, TinySMS.class), 0);
- SmsManager sms = SmsManager .getDefault();
- sms.sendTextMessage(phoneNumber, null, message, pi, null);
- }
SmsManager是android.telephony.gsm.SmsManager中定義的用戶管理短信應用的類。它的用法有點特殊,開發 人員不用直接實例化SmsManager類,而只需要調用靜態方法getDefault()獲得SmsManger對象,方法 sendTextMessage()用於發送短信到指定號碼。在上面這段代碼中,我們使用了一個PendingIntent的對象,該對象指向 TinySMSActivity。因此當用戶按下“發送短信”鍵之後,用戶界面會重新回到TinySMS的初始界面。
在Android的模擬器中對短信或電話提供了非常方便的測試功能。用戶只需要在Windows命令行中輸入emulator再啓動一個 Android模擬器,這樣就可以實現兩個手機間的電話或者短信的測試。需要說明的是,每個模擬器左上角的數字代表了該模擬器的電話號碼。比如我們現在有 兩個模擬器,號碼分別是5556和5554,從5556發送短信Hello, This is 5556到5554的效果如圖5-11所示:圖左側的模擬器(5556)發送短信到右側的模擬器(5554)。