5

我正在使用这个:

public void onCallStateChanged(int state, String incomingNumber)

正在听:

telephonyManager.listen(listener,PhoneStateListener.LISTEN_CALL_STATE);

我想知道拨出电话和来电,但现在我只接到来电(当状态更改正在响铃时)。谁能告诉我什么时候可以检测到拨出电话及其结束

还有一种方法可以在 Eclipse 模拟器中模拟传出呼叫。能够通过eclipse中的模拟器控制来电。

4

2 回答 2

13

使用带有意图android.intent.action.NEW_OUTGOING_CALL字符串参数的广播侦听器,IntentFilter并且不要忘记在 AndroidMenifest 中授予PROCESS_OUTGOING_CALLS. 这将起作用。每当有拨出电话时,都会显示敬酒消息。代码如下。

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);
于 2011-07-12T05:32:19.763 回答
1

创建一个新类,比如说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

<receiver
   android:name=".MyPhoneReceiver">
   <intent-filter>
     <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
  </intent-filter>
</receiver>

并且还在 AndroidManifest.xml 中添加:

<uses-permission
    android:name="android.permission.PROCESS_OUTGOING_CALLS">
</uses-permission>
于 2015-06-12T15:47:58.630 回答