Android发送短信其实很简单,关键的类是SmsManager(注意要使用telephone那个包下的),具体源码看下面:
package com.henii.android;
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.EditText;
import android.widget.Toast;
//!!!可以通过启动两个模拟器进行测试,发送短信时就拨另一个的端口号(如5554等)就行了!!!
//在AndroidManifest.xml中要添加权限:<uses-permission android:name="android.permission.SEND_SMS"/>
public class SMSActivity extends Activity {
private EditText mobileText;
private EditText contText;
private Button sendBtn;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//根据id找到控件并实例化它
mobileText = (EditText)findViewById(R.id.MobileEditText);
contText = (EditText)findViewById(R.id.ContEditText);
sendBtn = (Button)findViewById(R.id.SendButton);
//发送按钮的处理事件
sendBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String content = contText.getText().toString();
String mobile = mobileText.getText().toString();
//获得发送短信的管理器,使用的是android.telephony.SmsManager
SmsManager smsManager = SmsManager.getDefault();
//如果短信内容过长则分段发送
if(content.length() > 70){
//使用短信管理器进行短信内容的分段,返回分成的段
ArrayList<String> contents = smsManager.divideMessage(content);
for(String msg : contents){
//使用短信管理器发送短信内容
//参数一为短信接收者
//参数三为短信内容
//其他可以设为null
smsManager.sendTextMessage(mobile, null, msg, null, null);
}
//否则一次过发送
}else{
smsManager.sendTextMessage(mobile, null, content, null, null);
}
//Toast,用来显示发送成功的提示
Toast.makeText(SMSActivity.this, R.string.sucTxt, Toast.LENGTH_SHORT).show();
}
});
//!!!可以通过启动两个模拟器进行测试,发送短信时就拨另一个的端口号(如5554等)就行了!!!
}
package com.henii.android;
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.EditText;
import android.widget.Toast;
//!!!可以通过启动两个模拟器进行测试,发送短信时就拨另一个的端口号(如5554等)就行了!!!
//在AndroidManifest.xml中要添加权限:<uses-permission android:name="android.permission.SEND_SMS"/>
public class SMSActivity extends Activity {
private EditText mobileText;
private EditText contText;
private Button sendBtn;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//根据id找到控件并实例化它
mobileText = (EditText)findViewById(R.id.MobileEditText);
contText = (EditText)findViewById(R.id.ContEditText);
sendBtn = (Button)findViewById(R.id.SendButton);
//发送按钮的处理事件
sendBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String content = contText.getText().toString();
String mobile = mobileText.getText().toString();
//获得发送短信的管理器,使用的是android.telephony.SmsManager
SmsManager smsManager = SmsManager.getDefault();
//如果短信内容过长则分段发送
if(content.length() > 70){
//使用短信管理器进行短信内容的分段,返回分成的段
ArrayList<String> contents = smsManager.divideMessage(content);
for(String msg : contents){
//使用短信管理器发送短信内容
//参数一为短信接收者
//参数三为短信内容
//其他可以设为null
smsManager.sendTextMessage(mobile, null, msg, null, null);
}
//否则一次过发送
}else{
smsManager.sendTextMessage(mobile, null, content, null, null);
}
//Toast,用来显示发送成功的提示
Toast.makeText(SMSActivity.this, R.string.sucTxt, Toast.LENGTH_SHORT).show();
}
});
//!!!可以通过启动两个模拟器进行测试,发送短信时就拨另一个的端口号(如5554等)就行了!!!
}