Incoming Phone Call Receiver
BroadcastReceiver
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
Log.i("MyReceiver", "call state changed.... ");
//Tracking 2nd sim Mobile number
String second_state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
String second_number = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
Log.i("MyReceiver", "call state changed.... "+second_number);
Log.i("MyReceiver", "call state changed.... "+second_state);
TelephonyManager mtelephony = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
mtelephony.listen(new PhoneStateListener(){
@Override
public void onCallStateChanged(int state, String incomingNumber) {
Log.i("MyReceiver", "call state changed.... "+state);
super.onCallStateChanged(state, incomingNumber);
switch (state) {
case TelephonyManager.CALL_STATE_RINGING:
Log.d("MyReceiver", "I'm in " + state + " and the number is " + incomingNumber);
break;
default:
break;
}
}
},PhoneStateListener.LISTEN_CALL_STATE);
}
}
From Activity
MyReceiver myReceiver = new MyReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(TelephonyManager.ACTION_PHONE_STATE_CHANGED);
intentFilter.addCategory(Intent.CATEGORY_DEFAULT);
registerReceiver(myReceiver, intentFilter);
Manifest.XML
<receiver android:name=".MyReceiver" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
Permissions
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_CALL_LOG"/>