如何在电话管理器中查找拨出号码

我用这个:

public void onCallStateChanged(int state, String incomingNumber) 

正在听:

 telephonyManager.listen(listener,PhoneStateListener.LISTEN_CALL_STATE); 

我想知道传出和传入呼叫,但是现在我只接听来电(当状态变化振铃时)。 任何人都可以告诉我什么时候可以检测到拨出电话及其结束

还有一种方法可以模拟Eclipse模拟器中的传出调用。 能够通过eclipse中的模拟器控制为传入呼叫执行此操作。

使用具有意图android.intent.action.NEW_OUTGOING_CALL字符串参数的广播侦听器作为IntentFilter并且不要忘记将AndroidMenifest中的权限授予PROCESS_OUTGOING_CALLS 。 这会奏效。 每当有拨出呼叫时,将显示Toast消息。 代码如下。

 public static final String outgoing = "android.intent.action.NEW_OUTGOING_CALL" ; IntentFilter intentFilter = new IntentFilter(outgoing); BroadcastReceiver OutGoingCallReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub String outgoingno = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); Toast.makeText(context, "outgoingnum =" + outgoingno,Toast.LENGTH_LONG).show(); } }; registerReceiver(brForOutgoingCall, intentFilter); 

创建一个新类,比如说MyPhoneReceiver ,从BroadcastReceiver扩展它,并实现onReceive方法。

 public class MyPhoneReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent){ String phoneNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER); } } 

在另一个类中,比如onCreate方法中的MainActivity.class 。 例如。

  IntentFilter filter = new IntentFilter("android.intent.action.NEW_OUTGOING_CALL"); MyPhoneReceiver myPhoneReceiver = new MyPhoneReceiver(); registerReceiver(myPhoneReceiver,filter); 

AndroidManifest.xml中

      

并在AndroidManifest.xml中添加: