You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

sendSMS方法无法跳转至设备默认短信应用问题咨询

问题解决方案

根因说明

2024年8月中下旬Codename One安卓端核心库为适配Google Play短信权限合规政策,调整了sendSMS接口的默认逻辑:旧版本默认会主动申请SEND_SMS权限,权限通过后跳转系统短信应用;新版本为避免应用因不必要的短信权限申请被Google Play拒审,取消了接口内置的权限申请逻辑,所以直接调用会无响应。
dial接口逻辑未做调整,拨号权限的合规要求与短信权限不同,因此可正常使用。

解决方案

根据你的使用场景二选一即可:

方案1:保留原有sendSMS调用逻辑(需要申请短信权限)

  • 第一步:在项目codenameone_settings.properties配置文件中添加短信权限声明:
    android.permission.SEND_SMS=true
    
  • 第二步:调用sendSMS前先显式申请权限,示例代码如下:
    Permission.request(Permission.SMS, permissionGranted -> {
        if (permissionGranted) {
            Display.getInstance().sendSMS(phoneNumber, message, true);
        } else {
            // 补充权限被拒绝的兜底逻辑
        }
    });
    

方案2:直接调起系统短信应用(无需申请短信权限,更符合Google Play合规要求)

如果你的需求仅为跳转到系统短信应用让用户自主编辑发送,不需要后台发送功能,建议直接用系统意图调用,完全不用申请短信权限,也不会触发Google Play的权限审核问题,示例代码如下:

String encodedMessage = URLEncoder.encode(message, StandardCharsets.UTF_8.name());
Display.getInstance().execute("sms:" + phoneNumber + "?body=" + encodedMessage);

内容的提问来源于stack exchange,提问作者James N

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 20:48:01