Как сделать номера телефонов кликабельными в текстовом представлении в Android - PullRequest
1 голос
/ 17 апреля 2019

У меня есть текстовое представление, содержащее адрес электронной почты и номер телефона.Мой желаемый эффект заключается в том, что когда пользователь нажимает на электронную почту, он открывает приложение электронной почты по умолчанию, а когда пользователь нажимает на телефонный номер, приложение вытягивает его в номеронабирателе.С кодом ниже:

XML:

<TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/careers_guidance"
            android:id="@+id/careers_guidance_text"
            android:layout_marginStart="20dp"
            android:layout_marginEnd="20dp"
            android:layout_marginTop="5dp"
            android:linksClickable="true"
            android:textColorLink="#0000EE"
            android:autoLink="all"/>

Java:

careersGuidance = view.findViewById(R.id.careers_guidance_text);
    careersGuidance.setText(Html.fromHtml("<p>Help with choosing the right course and with thinking about where this might take you in the future.</p>" +
            "<p>Tel: <a href=\"tel:01274433043\">01274 433043</a></p>Email: <a href=\"mailto:careers@bradfordcollege.ac.uk\">careers@bradfordcollege.ac.uk</a>"));

Когда я запускаю свое приложение, только электронная почта кликабельна и работает так, как я хочучтобы это работало, номер телефона не кликабелен или не выделен.

enter image description here

Однако я заметил, что если я удалю адрес электронной почты из setTextJava-код и запустите приложение.Номер телефона становится синим и подчеркивается, как если бы он был кликабельным, но когда я нажимаю на него, ничего не происходит.

Как мне заставить это работать?

Кроме того, у меня есть разрешения CALL_PHONE, предоставленные в моемфайл манифеста, а также на моем устройстве эмулятора.

Ответы [ 2 ]

1 голос
/ 17 апреля 2019

Из электронного письма (.co.uk) я полагаю, что вы из Великобритании.Вам просто нужно добавить префикс номера телефона вашей страны, чтобы заменить 0, что +44.И вам не нужно использовать Html.fromHtml.

careersGuidance.setText("Help with choosing the right course and with thinking about where this might take you in the future.\n\nTel: +441274433043\n\nEmail: careers@bradfordcollege.ac.uk");

В вашем xml вам просто нужно это свойство

android:autoLink="all"
0 голосов
/ 17 апреля 2019

Вы должны добавить свой код страны в тел. Как это:

careers_guidance_text.setText(Html.fromHtml("
<p>Help with choosing the right course and with thinking about where this might take you in the future.</p>"
+"<p>Tel: <a href=\"tel:+4401274433043\">+441274 433043</a></p>
Email: <a href=\"mailto:careers@bradfordcollege.ac.uk\">
careers@bradfordcollege.ac.uk</a>"));

Также необходимо добавить разрешение CALL PHONE в файл манифеста Android. uses-permission android:name="android.permission.CALL_PHONE".

...