版权声明:本文为博主原创文章,未经博主允许不得转载。
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" />