【问题标题】:autoLink for map not working地图的自动链接不起作用
【发布时间】:2010-04-12 19:08:22
【问题描述】:

我的 XML 布局文件中有以下 TextView:-

<TextView  
   android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:text="@string/autolink_test"
       android:autoLink="all"
/>

字符串 autolink_test 包含电话号码、电子邮件地址、网站地址和物理地理地址。

虽然前三个正确显示为可点击的自动链接,但地址却没有。只有邮政编码部分显示为自动链接……而且还显示为电话号码! (当我单击它时,电话拨号器会以该号码启动)。

任何帮助将不胜感激。

【问题讨论】:

  • 如果您告诉我们什么是 String "autolink_test" 会有所帮助;否则很难诊断。
  • 丹尼尔,感谢您的评论。试图回答它帮助我找出了问题!

标签: android android-widget


【解决方案1】:

替代它,以防 自动链接 不起作用

将链接添加到您的 texview 。如下划线:

SpannableString spanStr = new SpannableString(buf.toString());
spanStr.setSpan(new UnderlineSpan(), 0, spanStr.length(), 0);
iTextView.setText(spanStr);

使用以下代码在点击时使用地图应用打开它:

Intent geoIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:0,0?q="
                                +iTextView.getText().toString()));
startActivity(geoIntent);

【讨论】:

  • 我决定使用这种方法,因为自动链接在文本是什么和不可接受的方面看起来如此“敏感”,(正如操作所说,“这对我来说有点奇怪,因为谷歌地图网站当然不关心这些细节。”)除了区分大小写,我注意到省略“街道”、“大道”等也会导致输入“拒绝”。
【解决方案2】:

好的,我找到了导致问题的原因。只是想我会在这里留下答案,以防其他人遇到同样的问题。

如果街道地址没有正确大写,则不能正确读取为地址!

这是我的 XML autolink_test 字符串:

<string name="autolink_test">Name: New York Times \n
   Email: public@nytimes.com \n
   Phone: 212-556-7652 \n
   Address: 620 Eighth Avenue New York, NY 10018  \n
   Address: 620 Eighth avenue New York, NY 10018  \n
   Website: http://www.nytimes.com
</string>

第一个地址正确显示为自动链接。 第二个('avenue' 中有一个小的'a')没有正确显示。

这对我来说有点奇怪,因为谷歌地图网站当然不关心这些细节。

不管怎样,这里是:-)

【讨论】:

  • 我挖得更深了,发现了真正的“isThisAnAddress”代码:WebKit source called via JNI,方法名是CacheBuilder::FindAddress。在case FIND_STREET:longStreetNames 数组被letter -= 'A' 索引,因此不支持小写。
  • 如果您不指定 street/lane/address/etc 作为地址的一部分,也会发生这种情况。
  • 使用林荫大道时同样的问题。不适用于 Blvd
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多