web-dev-qa-db-ja.com

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

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

171
Nik

それを達成する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は許可を必要としません。

ユーザーの操作なしで直接呼び出しを開始する場合、アクション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" textViewプロパティ

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

480
AAnkit

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

49
ashishduh

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

例:

08034448845は機能しません

しかし、+2348034448845

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

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

1
saurabh yadav

マニフェストに許可を追加します。

<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);

    }
});
0
Pouria Hemati

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

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

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

0
gprathour