Add PhoneStateListener
You have to create a receiver to catch phone calls.
To do this, add this in your in manifest.xml:
<uses-permission android:name="android.permission.READ_PHONE_STATE" /><receiver android:name=".ServiceReceiver"> <intent-filter> <action android:name="android.intent.action.PHONE_STATE" /> </intent-filter></receiver>
and create these classes:
import android.telephony.PhoneStateListener;import android.telephony.TelephonyManager;import android.util.Log;import android.webkit.WebView;public class MyPhoneStateListener extends PhoneStateListener { public static Boolean phoneRinging = false; public void onCallStateChanged(int state, String incomingNumber) { switch (state) { case TelephonyManager.CALL_STATE_IDLE: Log.d("DEBUG", "IDLE"); phoneRinging = false; break; case TelephonyManager.CALL_STATE_OFFHOOK: Log.d("DEBUG", "OFFHOOK"); phoneRinging = false; break; case TelephonyManager.CALL_STATE_RINGING: Log.d("DEBUG", "RINGING"); phoneRinging = true; break; } }}
import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.telephony.PhoneStateListener;import android.telephony.TelephonyManager;public class ServiceReceiver extends BroadcastReceiver { TelephonyManager telephony; public void onReceive(Context context, Intent intent) { MyPhoneStateListener phoneListener = new MyPhoneStateListener(); telephony = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); telephony.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE); } public void onDestroy() { telephony.listen(null, PhoneStateListener.LISTEN_NONE); }}