Android: android:autoLink= "web" не поддерживает параметры запроса после доменов
У меня есть TextView с автоссылкой, установленной как
<TextView
android:id="@+id/messageDetail_privateText_txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="web|phone|email" />
Но когда я устанавливаю текст с URL-адресом, например http://www.test.com/?p1=v1&p2=v2 автолинк TextView не распознает параметры запроса после домена.
Я могу понять, что такого рода URL не имеют особого смысла, но есть ли способ обойти эту проблему?
iOS распознает параметры просто отлично.
1 ответ
Отвечая на мой собственный вопрос, в конечном итоге мне удалось проверить URL-адреса строки и добавить косую черту вручную. Не самое крутое решение в мире, но сработало в этом случае.
Ниже код:
protected String normalizeURLs(String html)
{
String[] pieces = html.split(" ");
ArrayList<String> textParts = new ArrayList<>();
for(String piece : pieces) {
try {
URL isURL = new URL(piece);
String protocol = isURL.getProtocol();
String host = isURL.getHost();
String query = isURL.getQuery();
String path = isURL.getPath();
String questionMark = "?";
if (path.equals("")) {
path = "/";
}
if (query == null) {
query = "";
questionMark = "";
}
String url = protocol + "://" + host + path + questionMark + query;
textParts.add(url);
} catch (MalformedURLException exception) {
textParts.add(piece);
}
}
String resultString = "";
for (String s : textParts)
{
resultString += s + " ";
}
return resultString;
}