uni-app在android手机上htm5的sms协议发不了短信,通过手机浏览器sms:111111?body=xxxx可以发送

发布于 1周前 作者 phonegap100 来自 Uni-App

uni-app在android手机上htm5的sms协议发不了短信,通过手机浏览器sms:111111?body=xxxx可以发送

android手机上 htm5的sms协议发不了短信,通过手机浏览器sms:111111?body=xxxx可以发送,但在app里的html页面里,发送短信有问题,android 能跳转到发短信的页面上,手机号正常,但把body=也带上了,且如果是中文,中文内容也是urlencode的。代码里改成转码后的也不行 msg_content = encodeURI(xxxx) = android 能跳转到发短信的页面上,手机号正常,但把body=也带上了,且如果是中文,中文内容也是urlencode的。


1 回复

在uni-app中处理SMS协议发送短信的问题,特别是在Android设备上,确实可能遇到一些挑战,因为不同的操作系统和应用环境对SMS协议的支持存在差异。在标准的Web环境中,通过sms:协议在浏览器里发起短信发送请求是可行的,但在一个嵌入式的WebView或者某些特定的App框架(如uni-app)中,这种直接的方式可能会受限。

以下是一个在uni-app中尝试调用原生Android功能发送短信的示例,这通常需要借助uni-app的插件系统或者通过调用原生模块实现。这里我将展示一个使用uni-app的plus API(DCloud提供的扩展API)来发送短信的示例。注意,这种方法要求你的应用已经打包为原生App,并且在manifest.json中配置了相关的权限。

步骤一:配置权限

manifest.json中添加发送短信的权限:

"plus": {
    "distribute": {
        "android": {
            "permissions": [
                "android.permission.SEND_SMS"
            ]
        }
    }
}

步骤二:编写发送短信的代码

在需要发送短信的页面或组件中,使用plus.sms.send方法:

// 检查是否有发送短信的权限
plus.android.importClass('android.Manifest');
plus.android.requestPermissions([plus.android.invoke('android.Manifest$permission', 'SEND_SMS')], function(event){
    if (event.deniedAlways.length === 0) {
        // 权限请求成功,发送短信
        sendSMS('111111', 'xxxx');
    } else {
        console.error('发送短信权限被拒绝');
    }
});

// 发送短信的函数
function sendSMS(phoneNumber, message) {
    var SmsManager = plus.android.importClass('android.telephony.SmsManager');
    var smsManager = SmsManager.getDefault();
    var intent = new plus.android.Intent('android.intent.action.SENDTO', 'sms:' + phoneNumber);
    intent.putExtra('sms_body', message);
    plus.android.runtimeMainActivity().startActivity(intent);
    // 注意:上面的方式实际上是通过Intent启动短信应用界面让用户手动发送,若需直接发送,应使用SmsManager的sendTextMessage方法
    // 但由于隐私和安全问题,直接发送短信通常不被推荐,除非用户明确授权
    // smsManager.sendTextMessage(phoneNumber, null, message, null, null);
}

注意:直接通过SmsManager.sendTextMessage发送短信可能会因为安全和隐私问题被Android系统限制,特别是在没有用户明确授权的情况下。因此,上面的代码示例最终使用了Intent来启动短信应用界面,让用户手动完成发送操作。

确保你的应用已经正确打包,并且用户已经授予了必要的权限,这样才能成功发送短信。

回到顶部