[Android] 012_简单短信发送器

Android_012_简单短信发送器

简单的短信发送器, 一个输入电话号码的文本框, 一个输入短信的文本框,一个发送适合的按钮. 输入号码和短信内容, 点击按钮发送短信.

实现原理: 利用SmsManager 中的 getDefault()方法获得一个 短信管理器, 然后利用 SmsManager中的方法去实现发送适合的功能.(参考API中SmsManager)

SmsManager smsManager = SmsManager.getDefault();

程序的具体代码如下:

1. Java源文件中的代码:

View Code
package com.shy;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

publicclass SMSActivity extends Activity
{
//定义变量
private Button btnSend;
private TextView etNumber,etContent;

@Override
publicvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//利用控件id获得控件对象
btnSend =(Button)findViewById(R.id.btnSend);
etNumber
= (TextView)findViewById(R.id.etNumber);
etContent
= (TextView)findViewById(R.id.etContent);
//给按钮控件添加监听器
btnSend.setOnClickListener(new btnSendListener());

}

class btnSendListener implements OnClickListener
{

publicvoid onClick(View arg0)
{
//从EditView里获得电话号码和短信内容
String strNumber = etNumber.getText().toString();
String strContent
= etContent.getText().toString();

/*
*获取一个短信管理器SmsManager
*导入的包为: android.telephony.SmsManager
*/
SmsManager smsManager
= SmsManager.getDefault();

/*SmsManager的divideMessage方法的作用是将传入的短信进行拆分
 * 原因是因为每条短信都会有字数限制, 我们在发送适合之前要将内容
* 进行拆分,确保每条短信的字数不超过最大限制
* 将拆分后的字符串放入到ArrayList中
*/
ArrayList
<String> texts = smsManager.divideMessage(strContent);

for(String text : texts)
{
/*
* SmsManager中的sendTextMessage()方法是发送短信,它有5个参数
* destinationAddress: 要发送的目标的手机号码
* scAddress: 短信中心的号码, 可以置空
* text: 要发送的短信的内容
* sentIntent: 当手机将短信发出后会有两种状态用户可能会比较关心,
*  就是短信是否已经成功发出以及对方是否已经收到. 当我们
* 通过调用该方法发送短信时, 是通过手机硬件来调用手机运营
* 商的网络来完成发送功能,运营商会将发送的状态返回给手机,
* 手机接到状态信号后会以意图的方式 进行广播, 如果程序中注册
* 了该广播的接收者就可以接受该意图, 该参数就是用来接受短信
* 是否发送成功的意图, 如果不想获得,可以置空.
*deliveryIntent:与第四个参数类似,用来接收对方是否已经收到短信这个意图,
* 如果不想获得, 可以置空.
*/
smsManager.sendTextMessage(strNumber,
null,text,null,null);
}

/*
* 该行代码作用是当消息发送后,弹出一个提示信息, 告诉用户 已经发送出去了.
*/
Toast.makeText(SMSActivity.
this, R.string.success,Toast.LENGTH_SHORT).show();
//发送在成功后, 关闭这个Activity. (也可以调用启动其它的方法)
finish();
}

}
}

2. AndroidManifest.xml中的代码如下, 注意给程序申请发送短信的权限:

View Code
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package
="com.shy"
android:versionCode
="1"
android:versionName
="1.0">
<uses-sdk android:minSdkVersion="8"/>

<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".SMSActivity"
android:label
="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>

</application>
<!-- 下列这行代码就是为些程序申请发送短信的权限 -->
<uses-permission android:name="android.permission.SEND_SMS"/>

</manifest>

3. 程序在模拟器中运行的的结果如下, 输入手机号码和短信内容后, 点击发送短信按钮, 就可以发送短信了:

clip_image001

posted @ 2011-07-17 22:37  ShanHaiyang  阅读(513)  评论(0编辑  收藏  举报