電話番号を表示した状態でダイヤラーを開くにはどうすればよいですか?


193

電話番号を呼び出す必要はありません。電話番号が表示された状態でダイヤラを開くだけです。これIntentを達成するには何を使用すればよいですか?

回答:


531

それを達成する2つの方法。

1)ユーザーの介入なしに、コードを介してダイヤラーを開始する必要があります。

あなたはAction_Dial

以下のコードを使用すると、番号が指定されたダイヤラが開きます

Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:0123456789"));
startActivity(intent); 

'tel:'接頭辞が必要ですが、次の例外がスローされ ます:java.lang.IllegalStateException:アクティビティのメソッドを実行できませんでした。

Action_Dialには権限は必要ありません。

ユーザーの操作なしで直接通話を開始したい場合は、 actionを使用できますIntent.ACTION_CALL。この場合、AndroidManifest.xmlに次の権限を追加する必要があります。

<uses-permission android:name="android.permission.CALL_PHONE" />

2)ユーザーがPhone_Number文字列をクリックして通話を開始する必要があります。

android:autoLink="phone" 

以下のプロパティでTextViewを使用する必要があります。

android:autoLink = "phone" android:linksClickable = "true" a textViewプロパティ

この方法でインテントを使用したり、許可を得たりする必要はありません。


9
これはすばらしいことであり、すぐに呼び出されないという点でIntent.ACTION_CALLとは異なります
Amt87

ACTION_DIALには許可が必要ですか、それともACCESS_CALLだけが必要ですか?
Marc Plano-Lesay 2013年

1
これは、作品から電話番号を持つデンマークだけでなく:)あなたは必要としない番号の前に45を追加します。電話番号を解析するだけでうまく
いき

1
新しい目的でダイヤラーを開いた後、戻るボタンで問題が発生しました。3つの戻るボタンを押すだけでアプリケーションに戻ることができます(開いていないダイヤラのいくつかの画面が表示されます-ダイヤラ自体、新しい連絡先画面の作成、お気に入り)。誰かが戻るボタンを1回押すだけでアプリに戻る方法を知っていますか?
kashlo 2016年

2
2012 ...古き良き時代。それは政治的に正しい2018年です。大企業がユーザーデータを販売しており、私たちのアプリはSMSや電話の通話をサポートしないためにAndroidの官僚機構に対処する必要があります。
Josh、

52

答えはかなり遅いTextViewですが、電話番号を表示している場合は、インテントをまったく処理する必要はありません。XML属性android:autoLink="phone"を使用するだけで、OSが自動的にACTION_DIALインテントを開始します。


非常に速いアプローチ!
Taslim Oseni

7

さて、この質問への回答は非常に遅くなります。ただし、Kotlinで実行する場合のサンプルは1つだけです。

val intent = Intent(Intent.ACTION_DIAL)
intent.data = Uri.parse("tel:<number>")
startActivity(intent)

それは誰かを助けるかもしれないと思った。


2

@ashishduhが前述したように、使用するandroid:autoLink="phoneことも良い解決策です。ただし、このオプションには欠点が1つあり、電話番号の長さによっては機能しない場合があります。たとえば、11の電話番号はこのオプションでは機能しません。解決策は、電話番号の前に国コードを付けることです。

例:

08034448845 動かない

しかし+2348034448845ます


1
<TextView
 android:id="@+id/phoneNumber"
 android:autoLink="phone"
 android:linksClickable="true"
 android:text="+91 22 2222 2222"
 />

これは、ダイヤラでEditTextラベル割り当て番号を直接開く方法です。


1

マニフェストに権限を追加します。

<uses-permission android:name="android.permission.CALL_PHONE" />

ボタンまたはウィジェットの例を作成します。 btnCall

btnCall.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent callIntent = new Intent(Intent.ACTION_DIAL);
        callIntent.setData(Uri.parse("tel: +98990*******");
        startActivity(callIntent);

    }
});

この答えは正しいですが、この答えは質問と一致しません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.