diff --git a/src/main/java/eu/siacs/conversations/entities/Conversation.java b/src/main/java/eu/siacs/conversations/entities/Conversation.java index 3acddceb3bfe31479cd3982c697cd2d9300fa990..17818c081c7a47084258ad71be9deb755f613a72 100644 --- a/src/main/java/eu/siacs/conversations/entities/Conversation.java +++ b/src/main/java/eu/siacs/conversations/entities/Conversation.java @@ -72,6 +72,8 @@ import com.google.common.collect.Lists; import io.ipfs.cid.Cid; +import io.michaelrocks.libphonenumber.android.NumberParseException; + import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -126,6 +128,7 @@ import eu.siacs.conversations.ui.util.SoftKeyboardUtils; import eu.siacs.conversations.utils.Consumer; import eu.siacs.conversations.utils.JidHelper; import eu.siacs.conversations.utils.MessageUtils; +import eu.siacs.conversations.utils.PhoneNumberUtilWrapper; import eu.siacs.conversations.utils.UIHelper; import eu.siacs.conversations.xml.Element; import eu.siacs.conversations.xml.Namespace; @@ -1797,6 +1800,16 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl binding.values.setOnItemClickListener((arg0, arg1, pos, id) -> { new FixedURLSpan("xmpp:" + Jid.ofEscaped(values.getItem(pos).getValue()).toEscapedString()).onClick(binding.values); }); + } else if ("xs:anyURI".equals(datatype)) { + binding.values.setOnItemClickListener((arg0, arg1, pos, id) -> { + new FixedURLSpan(values.getItem(pos).getValue()).onClick(binding.values); + }); + } else if ("html:tel".equals(datatype)) { + binding.values.setOnItemClickListener((arg0, arg1, pos, id) -> { + try { + new FixedURLSpan("tel:" + PhoneNumberUtilWrapper.normalize(binding.getRoot().getContext(), values.getItem(pos).getValue())).onClick(binding.values); + } catch (final IllegalArgumentException | NumberParseException | NullPointerException e) { } + }); } binding.values.setOnItemLongClickListener((arg0, arg1, pos, id) -> {