版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Luck_Nie/article/details/83269875
调用系统短信界面,多联系人发送(兼容VIVO)
产品之前问了一个功能,需要跳到短信发送界面,并设置短信内容和多个联系人,所以进行了写了个demo,而且发现这里面有个VIVO的兼容性Bug.
旧代码
在网上看到的代码,大多是这个方法
/**
* 跳转短信
* 测试机型:华为,小米,vivo,oppo
* 发送单个联系人,这个方法都没有问题
* 发送多个联系人,除了VIVO,其他机型都没有问题,只有vivo会报“地址无效”的错误
*/
public void sendMes1() {
List<String> numbersArrayList = new ArrayList<>();
numbersArrayList.add("111");
numbersArrayList.add("222");
numbersArrayList.add("333");
numbersArrayList.add("444");
String phoneNumber = "";
for (String response : numbersArrayList) {
phoneNumber = phoneNumber + response + ";";
}
Uri smsToUri = Uri.parse("smsto:");
Intent intent = new Intent(Intent.ACTION_SENDTO, smsToUri);
intent.setData(Uri.parse("smsto:" + phoneNumber));
//to do add Monkey Download url
intent.putExtra("sms_body", "短信测试");
if (mContext != null) {
mContext.startActivity(intent);
}
}
新代码
经过好多天的查找的尝试,终于发现了一个通用的方法,可以兼容VIVO,完美实现功能
/**
* 多机型通用,兼容VIVO
*/
public void vivoSendMsg() {
List<String> numbersArrayList = new ArrayList<>();
numbersArrayList.add("111");
numbersArrayList.add("222");
numbersArrayList.add("333");
numbersArrayList.add("444");
String phoneNumber = "";
for (String response : numbersArrayList) {
phoneNumber = phoneNumber + response + ";";
}
Intent smsIntent = new Intent(Intent.ACTION_VIEW);
smsIntent.setData(Uri.parse("smsto:"));
smsIntent.setType("vnd.android-dir/mms-sms");//必须指定type
smsIntent.putExtra("address", phoneNumber);//address字段不能改
smsIntent.putExtra("sms_body", "测试");//sms_body 不能改
startActivity(smsIntent);
}
结束!