通过电子邮件发送链接会在Android中以双引号终止?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (103)

我正在开发一个发送包含多个信息的电子邮件的应用程序。其中包含指向用户在Google地图中的位置的链接。链接的示例如下:

http://www.google.com.ph/maps/place/14°39'3.8952"N121°2'57.4116"E/@14.651082,121.049281,17z

代码如下所示:

"Google Maps Link: http://www.google.com.ph/maps/place/" +
        degToDMS(location.getLatitude()) + "\"N" +
        degToDMS(location.getLongitude()) + "\"E/@" +
        location.getLatitude() + "," + location.getLongitude() + ",17z");

我使用我在网上找到的公式将度经度和纬度转换为DMS,它似乎返回了良好的数据。但是,当我查看电子邮件时,链接如下所示:

http://www.google.com.ph/maps/place/14°39'3.8952"N121°2'57.4116"E/@14.651082,121.049281,17z

并且超链接在N之前的第一个双引号(“)处结束。这实际上有点令人恼火和麻烦,因为它没有正确链接整个链接并且被切断。

如何在链接中逃避双引号?或者有更好的方式链接到谷歌地图?

提问于
用户回答回答于

我使用了URLEncode,感谢for3st的领导,因此:

    final String urlRaw = degToDMS(location.getLatitude()) + "\"N" +
            degToDMS(location.getLongitude()) + "\"E/@" +
            location.getLatitude() + "," + location.getLongitude() + ",17z";


    String encodedURL = "";
    try {
        encodedURL = URLEncoder.encode(urlRaw, "UTF-8");
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }

这里urlRaw是你的URL的“有问题”的一部分(其中字符不得到正确转义或某事),你不要把在http://....,因为它会出现这样http%3A%2F%2Fwww.google.com.ph和是的,你不希望出现这种情况。

因此,我只逃脱了我的网址的后半部分,即以DMS坐标开头的网址。

一旦我有了encodedURL变量,我就简单地将其连接到起始URL的其余部分:

String link = "Google Maps Link: http://www.google.com.ph/maps/place/" + encodedURL;

而不是它的工作原理。

扫码关注云+社区

领取腾讯云代金券