日志标签:sms

Android中发送短信(sms)

时间:2011年08月21日作者:么吉查看次数:104 views评论次数:0

  分享一下本人中其中一个应用(手机短信转发)的代码,主要是实现短信的发送功能。
  如果想做一些短信相关的应用,以下的代码可能对你有帮助。
相关的软件可以访问我发布在goapk里的页面 : http://www.goapk.com/pkg/rbase.app.smshelpmate

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package rbase.app.smshelpmate.sms.util;
 
import java.util.ArrayList;
 
import rbase.android.core.util.StringUtils;
import rbase.android.core.util.UIUtil;
import rbase.app.smshelpmate.R;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.telephony.SmsManager;
import android.util.Log;
 
/**
 * SMS 的工具类,主要是发送短信的辅助
 * 
 * @author r-base.net
 */
public class SmsUtil {
 
	public static void sendSMS(Context ctx, String phoneNumber, String message) {
		sendSMS(ctx, phoneNumber, message, null);
	}
 
	/**
	 * 发送sms
	 * 
	 * @param ctx Android 的 Context
	 * @param phoneNumber 发送的手机号码
	 * @param message 发送短信的内容
	 * @param toastText 发送后显示的toast内容
	 */
	public static void sendSMS(Context ctx, String phoneNumber, String message,String toastText) {
		Log.d("sms", "sending sms");
 
		// 检查手机号和转发内容,主要是检查手机号码与发送内容的合法性
		if(!checkMessage(ctx, phoneNumber, message)){
			return;
		}
 
		// 得到SMS的管理类
		SmsManager smsMgr = SmsManager.getDefault();
 
		// 如果大于70个字符需要分割成多条短信发送
		if (message.length() > 70) {
			ArrayList<String> msgs = smsMgr.divideMessage(message);
			for (String msg : msgs) {
				smsMgr.sendTextMessage(phoneNumber, null, msg, null, null);
			}
		} else {
			smsMgr.sendTextMessage(phoneNumber, null, message, null, null);
		}
 
		if(toastText == null){
			UIUtil.showMessage(ctx, "forward sms to "+ phoneNumber);
		}else{
			UIUtil.showMessage(ctx, toastText);
		}
	}
 
        // 检查合法性
	private static boolean checkMessage(Context ctx,String phoneNumber,String message){
		if(StringUtils.isEmptyTrim(phoneNumber)){
			UIUtil.showMessage(ctx, R.string.error_forward_phone_is_empty);
			Log.d("sms", "Forward Failure! Forward phone is empty!");
			return false;
		}
 
		if(StringUtils.isEmptyTrim(message)){
			UIUtil.showMessage(ctx, R.string.error_forward_message_is_empty);
			return false;
		}
 
		return true;
	}
}

注:需要添加以下的权限。

	<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
	<uses-permission android:name="android.permission.SEND_SMS"></uses-permission>