電話番号を呼び出す必要はありません。電話番号が表示された状態でダイヤラを開くだけです。これを達成するために使用するIntent
は何ですか?
それを達成する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プロパティ
この方法でインテントを使用したり、許可を取得したりする必要はありません。
答えはかなり遅れましたが、電話番号を表示しているTextView
があれば、意図をまったく処理する必要はありません。XML属性Android:autoLink="phone"
を使用するだけで、OSは自動的に開始しますACTION_DIAL
インテント。
前述の@ashishduhのように、Android:autoLink="phone
を使用することも良い解決策です。ただし、このオプションには1つの欠点があります。すべての電話番号の長さで機能するわけではありません。たとえば、このオプションでは11の電話番号は機能しません。解決策は、電話番号の前に国番号を付けることです。
例:
08034448845
は機能しません
しかし、+2348034448845
は
<TextView
Android:id="@+id/phoneNumber"
Android:autoLink="phone"
Android:linksClickable="true"
Android:text="+91 22 2222 2222"
/>
これは、ダイヤラーで番号が割り当てられたEditTextラベルを直接開く方法です。
マニフェストに許可を追加します。
<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);
}
});
さて、この質問に対する非常に遅い回答になるでしょう。ただし、Kotlinで実行する場合のサンプルは1つだけです。
val intent = Intent(Intent.ACTION_DIAL)
intent.data = Uri.parse("tel:<number>")
startActivity(intent)
それは誰かを助けるかもしれないと思った。