【问题标题】:ampersand in text message - sms sending android短信中的&符号 - 短信发送android
【发布时间】:2014-08-07 05:39:04
【问题描述】:

所以这是我的问题。

我有一个计时器,它应该每 X 秒发送一条短信。 我希望短信成为用户当前的 GPS 位置。 所以,我想发送一种谷歌地图 URL,使用我得到的 GPS 坐标,并为地图添加一些标记、地图类型、大小......。

为此,我需要在 URL 中使用字符“&”。为了得到这样的东西: http://maps.googleapis.com/maps/api/staticmap?center=40.714728,-73.998672&zoom=12&size=400x400&maptype=roadmap

(即:https://developers.google.com/maps/documentation/staticmaps/?csw=1#URL_Parameters

但是,当我想使用这种 URL 时,在我的 SMS 文本消息中使用“&”。 SMS 永远不会发送。当我删除包含“&”的每个部分时,它工作正常。

我尝试使用“&”代替 ”&”。还是不行。

这是我的短信管理员发送短信:

smsManager.sendTextMessage(INT, null, "Alert - RED AREA \n TIME :  " + current date + " \n  Lat: " + latitude + " \n Long: " + longitude + "Link Maps : http://maps.googleapis.com/maps/api/staticmap?center=" + latitude + "," + longitude +"&zoom=12&size=400x400&maptype=satellite", null, null);

上面的代码不发送任何消息。 但是这个可以:

smsManager.sendTextMessage(INT, null, "Alert - RED AREA \n TIME :  " + current date + " \n  Lat: " + latitude + " \n Long: " + longitude + "Link Maps : http://maps.googleapis.com/maps/api/staticmap?center=" + latitude + "," + longitude, null, null);

有什么想法吗?

谢谢!

【问题讨论】:

标签: android sms ampersand


【解决方案1】:

最简单的解决方案是考虑使用某种特殊字符(或字符串)来替换字符串中的“&”字符。

你会检查你的源字符串,并用 special 字符串(代表 '&')替换每次出现的 '&'。

反向机制应该在接收端实现。

但要小心!你需要仔细选择你的特殊字符串!因为如果你选择一个通常会出现在你的源字符串中的字符串,接收者会插入一个假的'&'字符。

如果这个解决方案不够好,请告诉我...我在我的一个应用程序中遇到了类似的问题,并找到了一种解决方法,无需用其他字符替换字符。

【讨论】:

  • 也不错!谢谢 :) 使用 &amps;工作也很好。事实上,问题在于授权的最大字符数。它不能超过 160,而我的字符总数约为 180-190。现在正在为 url 链接实现一个缩短器!
【解决方案2】:

使用“%26”而不是“&”或“&amp”,URL仍然会解析并且SMS会正确构造

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多