Android 群发短信的实现

本文介绍如何在Android应用中实现群发短信功能,包括判断系统版本、设置默认短信应用及发送流程。适用于Android 4.4及以上版本。

版权声明:本文为博主原创文章,未经博主允许不得转载。


SmsManager是Android提供的一个服务,SmsManager提供了一系列sendXxxMessage()方法用于发送短信,不过短信通常都是普通文本,

如果我们做的app具有发送信的功能,可能有的时候会用到群发的功能。比如有一条比较好笑的段子什么的要发送给朋友,这时候就会用到群发的功能。

Android 4.4开始只有系统指定的默认短信应用才能够进行收发短信功能。如果你的手机系统是4.4以上的就需要首先获取默认的短信应用权限才能具有发送短信的功能。

实现群发短信主要有以下几个步聚

1、判断是否为4.4以上的系统 

2、如果是4.4以上的系统 判断当前app是否为默认短信app

3、如果不是默认短信app 申请成为默认短信app

4、群发短信

上代码:

判断当前应用是否为默认短信应用

public static boolean isDefaultSms(Context context) {
if (context == null) {
return false;
}
//判断是否为4.4以上的系统
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
return true;
}
//获取默认的短信应用的包名

String packageName = Telephony.Sms.getDefaultSmsPackage(context);
//判断是否为空
if (TextUtils.isEmpty(packageName)) {
return false;
}
//获取当前的应用包名
String pName = context.getPackageName();
if (TextUtils.isEmpty(pName)) {
return false;
}
//判断当前app是否为默认短信应用
return packageName.equalsIgnoreCase(pName);
}



申请成为默认应用

<pre name="code" class="java"><span style="font-size:18px;">//判断是否为4.4以上的版本
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT)
	return;
	//申请成为默认短信
Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, context.getPackageName());
context.startActivity(intent);</span>

 

群发短信

插入数据库
		ContentValues values = new ContentValues();
		values.put("address", NumberUtils.getPhone(address)); // 发送地址
		values.put("body", body); // 消息内容
		values.put("date", System.currentTimeMillis()); // 创建时间
		values.put("type", type); // 1:接收;2:发送
		values.put("read", isRead ? 1 : 0); // 0:未读;1:已读
		values.put("seen", isRead ? 1 : 0); // 0:未查看;1:已查看
		values.put("status", 2);// 发送中
		context.getContentResolver().insert(Conversations.SMS.CONTENT_URI, values);

发送短信
	    //获取默认的smsManager
		SmsManager sms = SmsManager.getDefault();
		//分解 发送的内容
		ArrayList<String> mSMSMessage = sms.divideMessage(content);
		int messageCount = mSMSMessage.size();
		PendingIntent mSendPI = PendingIntent.getBroadcast(context, id, itSend, PendingIntent.FLAG_ONE_SHOT);
		ArrayList<PendingIntent> sentIntents = new ArrayList<PendingIntent>(messageCount);
		for (int i = 0; i < messageCount; i++) {
			sentIntents.add(mSendPI);
		}
		// 适配群发短信
		String[] addrs;
		if(NumberUtils.isGroup(address)){
			addrs = address.split(";");
		}else{
			addrs = new String[]{address};
		}
		for(String addr: addrs){
		    //发送短信
			sms.sendMultipartTextMessage(addr, null, mSMSMessage, sentIntents, null);
		}


好了,到此群群短信成功

当然还需要添加相应的权限
<uses-permission android:name="android.permission.SEND_SMS" />


  





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值