Hi - I'm having a problem with my PhoneStateListener not being called until after the Phone Activity is finished. Here is what I am doing:
step 1: Install a PhoneStateListener. The listener is supposed to call notify() (synchronized on the lock object) when it detects a change in the phone state (specifically OFF_HOOK). step 2: Place a call with the ACTION_CALL intent. step 3: Call wait(timeout) (in a synchronized loop), waiting for the listener to wake us up. (I realize wait/notify can be tricky but am confident the implementation is correct...) Step 3 is always appearing to time out even though I am seeing the call go through properly on the emulator screen. No matter what timeout value I use, it always times out even though telephonyManager.getCallState() returns the correct value (OFF_HOOK). I tried placing step 2 and step 3 in their own, separate (ordinary Java) threads. Same behavior. When I tried placing step 1 in its own (ordinary Java) thread, Android throws: 11-17 12:12:01.451: ERROR/AndroidRuntime(2004): Uncaught handler: thread Thread-9 exiting due to uncaught exception 11-17 12:12:01.451: ERROR/AndroidRuntime(2004): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 11-17 12:12:01.451: ERROR/AndroidRuntime(2004): at android.os.Handler.<init>(Handler.java:111) 11-17 12:12:01.451: ERROR/AndroidRuntime(2004): at android.telephony.PhoneStateListener$2.<init>(PhoneStateListener.java: 235) 11-17 12:12:01.451: ERROR/AndroidRuntime(2004): at android.telephony.PhoneStateListener.<init>(PhoneStateListener.java: 234) 11-17 12:12:01.451: ERROR/AndroidRuntime(2004): at test.phone.PhoneTestService$MyPhoneStateListener.<init> (PhoneTestService.java:529) 11-17 12:12:01.451: ERROR/AndroidRuntime(2004): at test.phone.PhoneTestService$MyPhoneStateListener.<init> (PhoneTestService.java:529) 11-17 12:12:01.451: ERROR/AndroidRuntime(2004): at test.phone.PhoneTestService.listenToCallState(PhoneTestService.java: 640) 11-17 12:12:01.451: ERROR/AndroidRuntime(2004): at test.phone.PhoneTestService.access$2(PhoneTestService.java:618) 11-17 12:12:01.451: ERROR/AndroidRuntime(2004): at test.phone.PhoneTestService$1.run(PhoneTestService.java:704) 11-17 12:12:01.451: ERROR/AndroidRuntime(2004): at java.lang.Thread.run(Thread.java:935) Working on figuring out the right way to launch the listener in a Handler thread - however, there's nothing in the PhoneStateListener write-up about having to launch in a separate execution context. This doesn't seem to follow Java orthodoxy either - e.g., in Swing, callbacks are invoked seamlessly - no separate execution context required. ...Unless - I've overlooked something ... Can anyone shed any light on this? Thanks much. -dreamer --~--~---------~--~----~------------~-------~--~----~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---