java - 从 java 应用程序发送的短信不会出现在 android 设备上

标签 java android sms

我有一个应用程序,我在其中使用短信提供商向我的 Android 设备发送短信。 我正在发送以下形式的消息:

  message =  "value: "+Float.toString(float1)+" and ratio: "+Float.toString(float2)

我正在使用 jva.net 库,代码是:

System.out.println("Sending sms");

InputStream response = null;
URLConnection connection = null;
try {
    connection = new URL("https://somesmsprovider.com/sms/sms.jsp?user=user&password=pass&mobiles=xxxxxxxxxx&sms="+message).openConnection();
} catch (MalformedURLException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
} catch (IOException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}

但是,我在设备上收到的只是:“值:”

我想这与编码有关。提供商可以选择激活 unicode 编码,但这也无济于事。 有人知道为什么我无法正确显示短信吗?

谢谢

最佳答案

显然,结果 URL 中的空格导致了问题。只需将它们替换为百分比编码值 - %20 - 似乎就可以解决问题。

message = message.replace(" ", "%20");

如果您在消息中包含除字母数字和基本标点符号以外的任何字符,您可能需要对整个 String 进行 URL 编码。 URLEncoder类在 Android 中可用,尽管它将空格编码为 +,因此您可能必须在编码后执行类似于上述的 replace(),正如我想象的那样 + 将在消息正文中保持不变。

关于java - 从 java 应用程序发送的短信不会出现在 android 设备上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36645285/

相关文章:

java - 如何创建泛型类型的数组?

java - JSF2.0 中的空白输入字段未设置为 NULL

java - android.security.KeyChainException : java. lang.IllegalStateException: uid <> 没有权限访问请求的别名

android - 如何在新Gradle中配置产品 flavor

android - 实时数据返回旧值,onChanged 触发多次

android - SMS 发送在 2.2 Froyo 中有效,但在 ICS 4.0 中无效

java - java 数组中用户输入的输出值

java - 如何恢复平衡服务器上的端口

objective-c - 向用户发送当前位置 Xcode

android - 短信队列处理失败短信