how to find outgoing number in Telephony manager

2019-04-29 08:15发布

I am using this:

public void onCallStateChanged(int state, String incomingNumber)

which is listening to:

telephonyManager.listen(listener,PhoneStateListener.LISTEN_CALL_STATE);

I want to know both outgoing and incoming calls but for now I only get incoming calls (when state changes is ringing). Can anyone tell me when can I detect outgoing call and its end

Also is there a way to simulate outgoing calls in Eclipse emulator. was able to do that for incoming calls via emulator control in eclipse.

2条回答
男人必须洒脱
2楼-- · 2019-04-29 08:44

Use a broadcast listener with an intent android.intent.action.NEW_OUTGOING_CALL string parametrer for the IntentFilter and don't forget to give permission in AndroidMenifest to PROCESS_OUTGOING_CALLS. This will work. Whenever there is an outgoing call a toast message will be shown. Code is below.

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);
查看更多
孤傲高冷的网名
3楼-- · 2019-04-29 08:50

Create a new class, let say MyPhoneReceiver, extends it from BroadcastReceiver, and implement onReceive method.

public class MyPhoneReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent){

        String phoneNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);

    }
}

In another class, let say, MainActivity.class inside onCreate method. for example.

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

In the AndroidManifest.xml

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

and also in the AndroidManifest.xml, add:

<uses-permission
    android:name="android.permission.PROCESS_OUTGOING_CALLS">
</uses-permission>
查看更多
登录 后发表回答