Подтвердить что ты не робот

Android делает номера телефонов доступными, автоопределяет

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

Эти элементы в Интернете отформатированы различными способами, поэтому существует некоторая встроенная функция, которая обнаруживает подобные вещи.

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

Нужно ли мне создавать кликнификаторы для каждого текстового поля или есть системная функция, которую мне просто нужно включить?

4b9b3361

Ответ 1

Отъезд Linkify

Ответ 2

Используйте

android:autoLink="phone"

в textView в файле макета xml

Ответ 3

import android.text.util.Linkify;

Linkify.addLinks(text, Linkify.PHONE_NUMBERS);

Ответ 4

Вы можете создавать регулярные выражения для каждого типа данных, которые вы хотите сделать интерактивными. Я точно не знаю, как выглядит номер телефона в вашей стране. Это для соответствия телефонных номеров в моей стране. Например:

String PHONE_REGEX = "([0-9]{3}[\\./ ]?(([0-9]{2}[\\./ ]?[0-9]{2}[\\./ ]?[0-9]{2})|({[0-9]{3}[\\./ ]?[0-9]{3})))"
String yourHTML = "This is my phone number: 053 12 34 56."
// Underline and make Bold
yourHTML = yourHTML.replaceAll(PHONE_REGEX, "<b><u>$1</u></b>");

Ответ 5

Если вы хотите обнаружить различные шаблоны, такие как электронные письма, контактные номера, веб-ссылку и установить отдельные реализации щелчков для этих шаблонов, я предлагаю вам использовать CustomClickableEmailPhoneTextview

введите описание изображения здесь

Пример кода для использования библиотеки.

CustomPartialyClickableTextview customPartialyClickableTextview= (CustomPartialyClickableTextview) findViewById(R.id.textViewCustom);

                /**
                 * Create Objects For Click Patterns
                 */
                ClickPattern email=new ClickPattern();
                ClickPattern phone=new ClickPattern();
                ClickPattern weblink=new ClickPattern();

                /**
                 * set Functionality for what will happen on click of that pattern
                 * In this example pattern is email
                 */
                email.setOnClickListener(new ClickPattern.OnClickListener() {
                    @Override
                    public void onClick() {

                        Toast.makeText(MainActivity.this,"email clicked",Toast.LENGTH_LONG).show();


                    }
                });

                /**
                 * set Functionality for what will happen on click of that pattern
                 * In this example pattern is phone
                 */
                phone.setOnClickListener(new ClickPattern.OnClickListener() {
                    @Override
                    public void onClick() {
                        Toast.makeText(MainActivity.this,"phone clicked",Toast.LENGTH_LONG).show();

                    }
                });

                /**
                 * set Functionality for what will happen on click of that pattern
                 * In this example pattern is weblink
                 */
                weblink.setOnClickListener(new ClickPattern.OnClickListener() {
                    @Override
                    public void onClick() {
                        Toast.makeText(MainActivity.this,"website clicked",Toast.LENGTH_LONG).show();

                    }
                });

                /**
                 * set respective regex string to be used to identify patter
                 */
                email.setRegex("\\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\\.[A-Z]{2,4}\\b"); // regex for email
                phone.setRegex("[1-9][0-9]{9,14}"); // regex for phone number
                weblink.setRegex("^(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]"); // regex for weblink

                /**
                 * add click pattern to the custom textview - first parameter is tag for reference second parameter is ClickPattern object
                 */
                customPartialyClickableTextview.addClickPattern("email",email);
                customPartialyClickableTextview.addClickPattern("phone",phone);
                customPartialyClickableTextview.addClickPattern("weblink",weblink);

Ответ 6

android:autoLink="phone"

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

<a href="tel:+4930123456789">+49 / 30 123456789</a>

а затем использовал этот статический вспомогательный метод для добавления поддержки веб-ссылок в мои текстовые элементы

public static void linkifyTextViews(@NonNull TextView... textViews) {
    for (TextView textView : textViews) {
        Linkify.addLinks(textView, Linkify.WEB_URLS);
        textView.setMovementMethod(LinkMovementMethod.getInstance());
    }
}

Ответ 7

Вы можете использовать его в TextView, как это,

Установите андроид: autoLink = "телефон" , как показано ниже,

<TextView
    android:layout_width="fill_parent"
    android:id="@+id/text"
    android:layout_height="wrap_content"
    android:autoLink="phone"
    android:gravity="center"
    android:linksClickable="true"
    android:text="@string/txtCredits" />

Однако

По какой-то причине выше код не работает все время. Итак, добавьте ниже код,

TextView textView = (TextView) findViewById(R.id.text);
textView.setMovementMethod(LinkMovementMethod.getInstance());