2017-01-16 18 views
1

私はcallIntent.setData(Uri.parse(phone))を使って番号を呼び出しています。電話の結果を取得

結果の値を取得する最善の方法(つまり、受信者が拒否されたかどうか)は何ですか?

基本的には、私は電話番号のシリーズを含むArrayListを持っています。私は最初のものを呼び出して、それが成功すれば停止したい。それ以外の場合は、2番目の呼び出しを続けます。

+0

をあなたが意図からコールを開始している場合、私は方法があるとは思わない。 – Ryan

答えて

1

私たち全員の利益のために、まずAndroidアプリから誰かを呼び出す方法と結果を受け取る方法を説明します。

電話での通話

あなたが電話して活動を開始する必要がある電話番号としてそのURIデータを設定するために、意図を作成する必要があります。

Intent callIntent = new Intent(Intent.ACTION_CALL); 
callIntent.setData(Uri.parse("tel:8195550504")); 
startActivity(callIntent); 

、着信や発信の情報を取得するには、バック

を結果取得、あなたが許可を求める必要があります。

<uses-permission android:name="android.permission.READ_PHONE_STATE"/> 

その後、TelephonyManagerオブジェクトを作成してにリスナーを開始すべての通話情報を受け取る:

TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 

TelephonyMgr.listen(new TeleListener(), PhoneStateListener.LISTEN_CALL_STATE); 

変更が電話から検出された場合、この機能がトリガされます。

public void onCallStateChanged(int state, String incomingNumber) 

を、あなたに着信番号と電話の状態に関する情報を提供します。

三つの状態があります。

IDLE(なし着信)、 OFFHOOK(回線がビジーである)、 RINGING(コールが着信であるが)。

あなたがそれに反応するswitch文を使用することができます。

あなたはOFFHOOK RINGING状態を登録するが、そうでない場合は、呼び出しが失敗したことを知っている(とあなたが次の番号を呼び出す必要がありますあなたのリスト)。 OFFHOOK状態がRINGING状態に続く場合、呼び出しは成功しました。

は、発信コールロガーを作成し、PRECISE_CALL_STATEを使用して送信された電話についての情報を読み取るために、このリンクを見てみましょう:

Cannot detect when outgoing call is answered in Android

  • ティムS. スタックオーバーフロー
関連する問題