回答:
それを達成する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プロパティ
この方法でインテントを使用したり、許可を得たりする必要はありません。
答えはかなり遅いTextView
ですが、電話番号を表示している場合は、インテントをまったく処理する必要はありません。XML属性android:autoLink="phone"
を使用するだけで、OSが自動的にACTION_DIAL
インテントを開始します。
@ashishduhが前述したように、使用するandroid:autoLink="phone
ことも良い解決策です。ただし、このオプションには欠点が1つあり、電話番号の長さによっては機能しない場合があります。たとえば、11の電話番号はこのオプションでは機能しません。解決策は、電話番号の前に国コードを付けることです。
例:
08034448845
動かない
しかし+2348034448845
ます
マニフェストに権限を追加します。
<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);
}
});