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)。
![]() |