我在Google地图上显示了几个标记。 当我点击标记时,它会打开一个自定义的InfoWindowAdapter
this.map.setInfoWindowAdapter(new CustomInfoWindowAdapter(getLayoutInflater()));
在这个CustomInfoWindowAdapter中,我会显示一些文字并在找到电话号码时创建一个链接:
@Override
public View getInfoContents(Marker marker) {
if (this.popup == null) {
this.popup = inflater.inflate(R.layout.poi_marker, null);
}
TextView tv = (TextView) popup.findViewById(R.id.title);
tv.setText(marker.getTitle());
tv = (TextView) popup.findViewById(R.id.snippet);
tv.setText(marker.getSnippet());
Linkify.addLinks(tv, Linkify.PHONE_NUMBERS);
return(popup);
}
然后显示正确。我可以看到电话号码显示为链接,但我不能按它... 我如何才能打开拨号器?
答案 0 :(得分:0)
我终于设法这样做了:
是的,但问题是电话解析;)
我设法做到了
this.map.setOnInfoWindowClickListener(new OnInfoWindowClickListener(){
@Override
public void onInfoWindowClick(Marker marker) {
final String description = marker.getSnippet();
if (!TextUtils.isEmpty(description)) {
final Spannable span = Spannable.Factory.getInstance().newSpannable(description);
if (Linkify.addLinks(span, Linkify.PHONE_NUMBERS)) {
final URLSpan[] old = span.getSpans(0, span.length(), URLSpan.class);
if (old != null && old.length > 0) {
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(old[0].getURL()));
startActivity(intent);
}
}
}
}
});