我有一个应用程序,我在其中使用短信提供商向我的 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/