uni-app中使用native.js调用android API实现双卡发送短信
uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉)等多个平台官网地址因为业务逻辑需要调用短信功能,但是uni-app 中未提供相关接口。查看uni-app的框架图可以看出是可以使用native.js去调用的android API的native.js 介绍及文档:h...
·
uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉)等多个平台官网地址
因为业务逻辑需要调用短信功能,但是uni-app 中未提供相关接口。查看uni-app的框架图可以看出
是可以使用native.js去调用的android API的
native.js 介绍及文档:https://ask.dcloud.net.cn/article/88
于是乎,在百度上搜索了 android 发送短信的 代码 将其改写成native.js调用
原android代码
public void sendMessages(String sPhoneNum, String sMesage, int id){
SubscriptionInfo sInfo = null; final SubscriptionManager sManager = (SubscriptionManager)this .getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
List<SubscriptionInfo> lists = sManager.getActiveSubscriptionInfoList();
if(lists == null || lists.isEmpty()){
return;
}
sInfo = lists.get(id);
if(sInfo != null){
int subId = sInfo.getSubscriptionId();
SmsManager managers = SmsManager.getSmsManagerForSubscriptionId(subId);
ArrayList<String> arrayListlist = managers.divideMessage(sMesage);
managers.sendMultipartTextMessage(sPhoneNum,null,arrayLis tlist,null,null);
}
}
native.js代码:
//通过native.js 调用android API 发送短信
sendMessage1() {
if (plus.os.name == "Android") {
//获取当前MainActivity
var main = plus.android.runtimeMainActivity();
//获取SystemService
var sManager = main.getSystemService("telephony_subscription_service");
console.log(sManager);
//获取所有卡列表
var subscriptionInfoList = plus.android.invoke(sManager,"getActiveSubscriptionInfoList");
//获取卡信息
var sInfo = plus.android.invoke(subscriptionInfoList,"get",0);
//获取卡id
var id = plus.android.invoke(sInfo,"getSubscriptionId");
console.log(id);
//获取卡id获取SMSManagers对象
var managers = plus.android.invoke("android.telephony.SmsManager","getSmsManagerForSubscriptionId",id);
var eMessage = "哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈--------------";
//分割短信内容 短信规定不能大于70字,大于70会被分割,分开发送
var list = plus.android.invoke(managers,"divideMessage",eMessage);
//发送短信
var returns = plus.android.invoke(managers,"sendMultipartTextMessage","188****1189",null,list,null,null);
}
另附一种解决方案 使用H5+掉起系统的短信发送界面
// 通过 h5+ 掉起 系统短信发送界面
sendMessage2() {
//创建一条信息 短信/彩信/邮件
var msg = plus.messaging.createMessage(plus.messaging.TYPE_SMS);
msg.to = ['18829221189']; //发给谁
msg.body = '艾欧尼亚昂扬不灭';
// msg.silent = true; 静默发送(后台发送) 不好使
//发送信息
plus.messaging.sendMessage(msg,
function (){
uni.showModal({
content: 'successs',
showCancel: false
});
},function(){
uni.showModal({
content: 'error',
showCancel: false
});
});
更多推荐
已为社区贡献1条内容
所有评论(0)