Here I am going to explain how to detect call end event using Broadcast listener.
Step 1)PhoneBroadcastReceiver.java
public class PhoneBroadcastReceiver extends BroadcastReceiver {
Context mcontext;
String number;
private int prev_state;
@Override
public void onReceive(Context context, Intent intent) {
TelephonyManager telephony =
(TelephonyManager)context.getSystemService
(Context.TELEPHONY_SERVICE);
CustomPhoneStateListener customPhoneListener = new CustomPhoneStateListener();
telephony .listen(customPhoneListener ,
PhoneStateListener.LISTEN_CALL_STATE);
Bundle bundle = intent.getExtras();
String phoneNum = bundle.getString("number");
mcontext= context;
}
public class CustomPhoneStateListener extends PhoneStateListener {
@Override
public void onCallStateChanged(int state, String incomingNumber){
if( incomingNumber != null && incomingNumber.length() > 0 )
number = incomingNumber;
switch(state){
case TelephonyManager.CALL_STATE_RINGING:
prev_state=state;
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
prev_state=state;
break;
case TelephonyManager.CALL_STATE_IDLE:
if((prev_state== TelephonyManager.CALL_STATE_OFFHOOK)){
prev_state=state;
//Answered Call
}
if((prev_state== TelephonyManager.CALL_STATE_RINGING)){
prev_state=state;
//Rejected or Missed call
}
break;
}
}
}
}
Step 2)Register the receiver
<receiver android:name=".PhoneBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE">
</action></intent-filter>
</receiver>
Step 3)Add permission to your manifest
<uses-permission android:name="android.permission.READ_PHONE_STATE">
</uses-permission>
Happy Coding:)
No comments:
Post a Comment