web-dev-qa-db-ja.com

Android電話番号をクリック可能にする、自動検出

Android=ウェブサイトでメールを読んでいるときに、アドレスをクリックしてGoogleマップにロードしたり、電話番号をクリックして電話をかけたり、メールをクリックしてメールを送信したりできます。 。

Web上のこれらの要素はさまざまな方法でフォーマットされているため、これらの種類のものを検出する組み込み関数がいくつかあります。

アプリ内でこれをどのように許可しますか?連絡先情報をプレーンテキストで表示するページがあり、ユーザーがクリックできるようにしたいのですが。

テキストビューごとに絶対にクリックリスナーを作成する必要がありますか、それとも有効にする必要があるシステム機能はありますか?

33
CQM

Androidには、この目的のために明示的にユーティリティが用意されています。 Linkify

TextView noteView = (TextView) findViewById(R.id.noteview);
noteView.setText(someContent);
Linkify.addLinks(noteView, Linkify.ALL);

参照: https://Android-developers.googleblog.com/2008/03/linkify-your-text.html

24
zienkikk

使用する

Android:autoLink="phone"

xMLレイアウトファイルのtextView

60
Amt87
import Android.text.util.Linkify;

Linkify.addLinks(text, Linkify.PHONE_NUMBERS);
19
Keith Maurino

このようにTextViewで使用できます。

以下のようにAndroid:autoLink = "phone"を設定し、

<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());
3
Yuvraj Pandey
Android:autoLink="phone"

すべての電話で私のために働いていました...サムスンを除いて。したがって、私は次のオプションを選択しました。サポートするように変換された電話番号テキスト クリックして電話

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

次に、この静的ヘルパーメソッドを使用して、TextViewsにWebリンクサポートを追加しました

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

メール、連絡先番号、ウェブリンクなどのさまざまなパターンを検出し、これらのパターンに個別のクリック時の実装を設定する場合は、 CustomClickableEmailPhoneTextview を使用することをお勧めします

enter image description here

ライブラリを使用するためのサンプルコード。

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._%+-]+@[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);
0
Nitin Jaiman