我使用callIntent.setData(Uri.parse(phone))
拨打号码。获取拨打电话的结果
获得结果价值的最佳方式是什么(即接收方拒绝接听还是不接听)?
基本上,我有一个ArrayList
其中包括一系列的电话号码。我想打电话给第一个,然后停止,如果成功。否则它继续呼叫第二个,依此类推。
我使用callIntent.setData(Uri.parse(phone))
拨打号码。获取拨打电话的结果
获得结果价值的最佳方式是什么(即接收方拒绝接听还是不接听)?
基本上,我有一个ArrayList
其中包括一系列的电话号码。我想打电话给第一个,然后停止,如果成功。否则它继续呼叫第二个,依此类推。
为了我们所有人的利益,我将首先解释如何从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
如果你是从意向开始打电话,我认为没有办法。 – Ryan