電話番号に電話する必要はありません。電話番号が表示された状態でダイヤラーを開くだけで済みます。Intent
これを達成するには何を使用すればよいですか?
6 に答える
それを達成するための2つの方法。
1)ユーザーの操作なしで、コードを介してダイヤラーを開始する必要があります。
あなたが必要ですAction_Dial
、
以下のコードを使用すると、指定された番号で Dialer が開きます
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" 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 ラベルに割り当てられた番号を直接開く方法です。