Hi all, I would like to know what are the main differences between TelephonyManager and PhoneStateListener, because you can do (more or less) the same things with both. For example, you could create an incoming calls register implementing a broadcastreceiver and using TelephonyManger API or extending PhoneStateListener class and registering this new listener throughTelephonyManager .
Case 1 - BroadcastReceiver (TelephonyManager) public class TestServiceReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); int state = telephony.getCallState(); switch(state) { case TelephonyManager.CALL_STATE_IDLE: Log.d("TestServiceReceiver", "IDLE"); break; case TelephonyManager.CALL_STATE_OFFHOOK: Log.d("TestServiceReceiver", "OFFHOOK"); break; case TelephonyManager.CALL_STATE_RINGING: Log.d("TestServiceReceiver", "RINGING"); break; } } } <receiver android:name=".TestServiceReceiver"> <intent-filter> <action android:name="android.intent.action.PHONE_STATE" /> </intent-filter> </receiver> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> Case 2 - PhoneStateListener public class TestServiceReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); TestPhoneStateListener listener = new TestPhoneStateListener(); telephony.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE); } } public class TestPhoneStateListener extends PhoneStateListener { public void onCallStateChanged(int state,String incomingNumber){ switch(state) { case TelephonyManager.CALL_STATE_IDLE: Log.d("TestPhoneStateListener ", "IDLE"); break; case TelephonyManager.CALL_STATE_OFFHOOK: Log.d("TestPhoneStateListener ", "OFFHOOK"); break; case TelephonyManager.CALL_STATE_RINGING: Log.d("TestPhoneStateListener ", "RINGING"); break; } } } <receiver android:name=".TestServiceReceiver"> <intent-filter> <action android:name="android.intent.action.PHONE_STATE" /> </intent-filter> </receiver> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> In case 2, when the phone state changed, a new testphonestatelistener will be registered (telephony.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE)), but I could solve this problem convertingthe TestPhoneStateListener into a Singleton and using PhoneStateListener listener = TestPhoneStateListener().getInstance() instead TestPhoneStateListener listener = new TestPhoneStateListener(). So my main question is when I have to use each one and for what purposes. Thanks and regards! -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en