219

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

4

6 に答える 6

583

それを達成するための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 プロパティ

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

于 2012-07-28T09:27:49.727 に答える
57

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

于 2014-11-06T15:45:31.630 に答える
2

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

例:

08034448845動作しません

しかし+2348034448845

于 2017-06-04T07:58:54.350 に答える
1
<TextView
 android:id="@+id/phoneNumber"
 android:autoLink="phone"
 android:linksClickable="true"
 android:text="+91 22 2222 2222"
 />

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

于 2017-11-07T07:41:09.503 に答える