After a long time of searching and logic to solve this problem, I get a solution:
Problem: If I call a person, if my call is not accepted by a person, I need to show a toast on my side, my call is rejected
Solution: Create a receiver that registers with two actions
android.intent.action.NEW_OUTGOING_CALL android.intent.action.PHONE_STATE
Both actions are necessary.
To do this, you must accept this permission.
<uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.CALL_PHONE"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
Manifast.xml
<receiver android:name="Call_Receiver"> <intent-filter> <action android:name="android.intent.action.NEW_OUTGOING_CALL"/> <action android:name="android.intent.action.PHONE_STATE"/> </intent-filter> </receiver>
And your BroadcastReceiver class
* Call_Receiver.java *
import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.util.Log; import android.widget.Toast; public class Call_Receiver extends BroadcastReceiver { private Context ctx; @Override public void onReceive(Context context, Intent intent) { ctx = context; OutgoingIncomingCallListener phoneListener = new OutgoingIncomingCallListener(); TelephonyManager telephony = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); if (intent.getAction() .equals("android.intent.action.NEW_OUTGOING_CALL")) { Log.i("", " :::::::::::: inside onReceive if &&&&&& :::::::::::::"); telephony.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE); } } class OutgoingIncomingCallListener extends PhoneStateListener { public boolean wasRinging; @Override public void onCallStateChanged(int state, String incomingNumber) { switch (state) { case TelephonyManager.CALL_STATE_RINGING: Log.i("", " ************ RINGING ********"); wasRinging = true; break; case TelephonyManager.CALL_STATE_OFFHOOK: Log.i("", " *********** OFFHOOK ********"); if (!wasRinging) {
This will show you a toast when you call, not accepted.
source share