2017-01-16 73 views
1

我使用callIntent.setData(Uri.parse(phone))拨打号码。获取拨打电话的结果

获得结果价值的最佳方式是什么(即接收方拒绝接听还是不接听)?

基本上,我有一个ArrayList其中包括一系列的电话号码。我想打电话给第一个,然后停止,如果成功。否则它继续呼叫第二个,依此类推。

+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(无呼入), 摘机(占线), 振铃(呼叫到来)。

然后,您可以使用switch语句对其作出反应:

如果您注册一个振铃状态,但不是摘机,你就知道该呼叫是不成功的(你应该拨打下一个号码你的清单)。如果OFFHOOK状态遵循RINGING,则呼叫成功。

看看此链接创建传出呼叫记录和使用阅读关于发送的电话信息PRECISE_CALL_STATE:

Cannot detect when outgoing call is answered in Android

  • 添S. 堆栈溢出