【问题标题】:E-mailing a link gets terminated at a double quote in Android通过电子邮件发送链接在 Android 中以双引号终止
【发布时间】:2016-08-21 12:02:15
【问题描述】:

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

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之前的第一个双引号(“)结束。这实际上有点烦人和麻烦,因为它没有正确链接整个链接并且被切断了。

如何避免链接中的双引号?或者有没有更好的方法来链接到 Google 地图?

【问题讨论】:

  • 使用 java.net.URLEncoder
  • 试试\\\" 而不是\"
  • 将研究这两种解决方案持有 n。
  • @rotwang,使用\\\" 代替\" 不起作用。 @for3st,网址编码器有效。现在将回答我的问题。
  • 好的,这是一个试用版。我还想过用" 代替\"。或\u0022.

标签: android


【解决方案1】:

我使用了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 是您网址的“有问题”部分(其中字符没有正确转义或其他)。您不要输入http://....,因为它会出现比如http%3A%2F%2Fwww.google.com.ph,是的,你不想要那个。

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

一旦我有了encodedURL 变量,我只需将它连接到起始 URL 的其余部分:

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

但它不起作用。

【讨论】:

    猜你喜欢
    • 2016-04-08
    • 1970-01-01
    • 2014-07-01
    • 2020-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 2019-07-17
    相关资源
    最近更新 更多