I need to check the Sim card State and do several actions depending on its state. From what i understood about the BroadcastReceiver, when the Sim State is changed, the onReceive method of the broadcastReceiver is executed.
Here's the BroadcastReceiver class :
public class SimStateListener extends BroadcastReceiver {
public SimStateListener() {
}
@Override
public void onReceive(Context context, Intent intent) {
// TODO: This method is called when the BroadcastReceiver is receiving
// an Intent broadcast.
// Checks Sim card State
TelephonyManager telephoneMgr = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
int simState = telephoneMgr.getSimState();
switch (simState) {
case TelephonyManager.SIM_STATE_ABSENT:
Log.i("SimStateListener", "Sim State absent");
break;
case TelephonyManager.SIM_STATE_NETWORK_LOCKED:
Log.i("SimStateListener", "Sim State network locked");
break;
case TelephonyManager.SIM_STATE_PIN_REQUIRED:
Log.i("SimStateListener", "Sim State pin required");
break;
case TelephonyManager.SIM_STATE_PUK_REQUIRED:
Log.i("SimStateListener", "Sim State puk required");
break;
case TelephonyManager.SIM_STATE_UNKNOWN:
Log.i("SimStateListener", "Sim State unknown");
break;
case TelephonyManager.SIM_STATE_READY:
Log.i("SimStateListener", "Sim State ready");
String phoneNumber = telephoneMgr.getLine1Number();
Log.i("SimStateListener", phoneNumber);
Toast.makeText(context, phoneNumber, Toast.LENGTH_LONG).show();
if(phoneNumber.equals(myPhoneNumber)){
// do nothing
break;
}
else{
Log.i("SimStateListener", "Sim card is changed");
// do something
break;
}
}
}
}
Here is what i put in the Manifest :
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<receiver android:name="com.example.trackyourandroid.SimStateListener" android:enabled="true" android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
Here is what i'm getting in the LogCat :
12-18 08:08:29.420: W/BroadcastQueue(1303): Failure sending broadcast Intent { act=android.intent.action.SIM_STATE_CHANGED flg=0x20000010 (has extras) }
12-18 08:08:29.560: W/BroadcastQueue(1303): Failure sending broadcast Intent { act=android.intent.action.SIM_STATE_CHANGED flg=0x20000010 (has extras) }
12-18 08:08:29.710: W/BroadcastQueue(1303): Failure sending broadcast Intent { act=android.intent.action.SIM_STATE_CHANGED flg=0x20000010 (has extras) }
12-18 08:08:33.940: W/BroadcastQueue(1303): Failure sending broadcast Intent { act=android.intent.action.SIM_STATE_CHANGED flg=0x20000010 (has extras) }
12-18 08:08:33.980: W/BroadcastQueue(1303): Failure sending broadcast Intent { act=android.intent.action.SIM_STATE_CHANGED flg=0x20000010 (has extras) }
12-18 08:08:34.000: W/BroadcastQueue(1303): Failure sending broadcast Intent { act=android.intent.action.SIM_STATE_CHANGED flg=0x20000010 (has extras) }
12-18 08:08:35.680: W/BroadcastQueue(1303): Failure sending broadcast Intent { act=android.intent.action.SIM_STATE_CHANGED flg=0x20000010 (has extras) }
12-18 08:08:35.850: W/BroadcastQueue(1303): Failure sending broadcast Intent { act=android.intent.action.SIM_STATE_CHANGED flg=0x20000010 (has extras) }
12-18 08:08:35.860: W/BroadcastQueue(1303): Failure sending broadcast Intent { act=android.intent.action.SIM_STATE_CHANGED flg=0x20000010 (has extras) }
Stack trace :
12-18 10:53:18.850: E/ActivityManager(2170): ANR in com.android.systemui
12-18 10:53:18.850: E/ActivityManager(2170): PID: 2221
12-18 10:53:18.850: E/ActivityManager(2170): Reason: Broadcast of Intent { act=android.intent.action.TIME_TICK flg=0x50000014 (has extras) }
12-18 10:53:18.850: E/ActivityManager(2170): Load: 6.4 / 2.12 / 1.02
12-18 10:53:18.850: E/ActivityManager(2170): CPU usage from 3482ms to -8134ms ago:
12-18 10:53:18.850: E/ActivityManager(2170): 38% 2170/system_server: 25% user + 13% kernel / faults: 1455 minor 10 major
12-18 10:53:18.850: E/ActivityManager(2170): 15% 2330/com.android.launcher: 12% user + 3.3% kernel / faults: 2121 minor 10 major
12-18 10:53:18.850: E/ActivityManager(2170): 14% 2151/surfaceflinger: 6.2% user + 8% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 13% 2319/com.android.phone: 8.9% user + 4.8% kernel / faults: 831 minor 3 major
12-18 10:53:18.850: E/ActivityManager(2170): 6.6% 2221/com.android.systemui: 4.3% user + 2.2% kernel / faults: 639 minor 6 major
12-18 10:53:18.850: E/ActivityManager(2170): 2.8% 2161/bootanimation: 0.9% user + 1.9% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 1.2% 25/mtdblock0: 0% user + 1.2% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 1.5% 59/adbd: 0% user + 1.4% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 1% 12/kswapd0: 0% user + 1% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 0.7% 2300/com.android.settings: 0.5% user + 0.2% kernel / faults: 345 minor 1 major
12-18 10:53:18.850: E/ActivityManager(2170): 0.7% 2367/android.process.acore: 0.4% user + 0.3% kernel / faults: 80 minor 1 major
12-18 10:53:18.850: E/ActivityManager(2170): 0.3% 48/rild: 0.2% user + 0.1% kernel / faults: 16 minor
12-18 10:53:18.850: E/ActivityManager(2170): 0.5% 2347/com.android.printspooler: 0% user + 0.5% kernel / faults: 104 minor
12-18 10:53:18.850: E/ActivityManager(2170): 0.3% 284/logcat: 0.1% user + 0.1% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 0.3% 1502/kworker/0:0: 0% user + 0.3% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 0.2% 1//init: 0.1% user + 0% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 0.1% 26/mtdblock1: 0% user + 0.1% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 0% 3/ksoftirqd/0: 0% user + 0% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 0% 43/servicemanager: 0% user + 0% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 100% TOTAL: 61% user + 38% kernel + 0% softirq
12-18 10:53:18.850: E/ActivityManager(2170): CPU usage from 6733ms to 7312ms later:
12-18 10:53:18.850: E/ActivityManager(2170): 31% 2170/system_server: 16% user + 15% kernel / faults: 65 minor
12-18 10:53:18.850: E/ActivityManager(2170): 11% 2185/ActivityManager: 3.7% user + 7.5% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 6.3% 2181/Binder_1: 5% user + 1.2% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 3.7% 2182/Binder_2: 2.5% user + 1.2% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 2.5% 2177/Compiler: 1.2% user + 1.2% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 2.5% 2345/Binder_5: 1.2% user + 1.2% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 2.5% 2346/Binder_6: 0% user + 2.5% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 2.5% 2362/Binder_8: 1.2% user + 1.2% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 1.2% 2251/Binder_3: 1.2% user + 0% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 15% 2319/com.android.phone: 11% user + 3.6% kernel / faults: 51 minor
12-18 10:53:18.850: E/ActivityManager(2170): 8% 2319/m.android.phone: 5.8% user + 2.2% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 2.9% 2326/Compiler: 2.2% user + 0.7% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 2.9% 2381/RILReceiver: 2.9% user + 0% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 1.4% 2380/RILSender: 0.7% user + 0.7% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 13% 2330/com.android.launcher: 8.4% user + 4.9% kernel / faults: 567 minor 8 major
12-18 10:53:18.850: E/ActivityManager(2170): 11% 2330/ndroid.launcher: 7.7% user + 3.5% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 1.4% 2334/GC: 0% user + 1.4% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 0.7% 2339/Compiler: 0.7% user + 0% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 10% 2221/com.android.systemui: 9.1% user + 1.4% kernel / faults: 112 minor
12-18 10:53:18.850: E/ActivityManager(2170): 9.8% 2221/ndroid.systemui: 7.7% user + 2.1% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 0.7% 2228/Compiler: 0.7% user + 0% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 2.8% 2151/surfaceflinger: 0.7% user + 2.1% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 1.4% 2156/DispSync: 0.7% user + 0.7% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 0.7% 2151/surfaceflinger: 0% user + 0.7% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 0.7% 2166/Binder_4: 0% user + 0.7% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 1.3% 48/rild: 0.6% user + 0.6% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 1.3% 76/rild: 0.6% user + 0.6% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 1.7% 12/kswapd0: 0% user + 1.7% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 1.5% 59/adbd: 0% user + 1.5% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 1.5% 279/adbd: 0% user + 1.5% kernel
12-18 10:53:18.850: E/ActivityManager(2170): 100% TOTAL: 62% user + 37% kernel
12-18 10:53:21.560: E/InputDispatcher(2170): channel 'b3fdc490 StatusBar (server)' ~ Channel is unrecoverably broken and will be disposed!
12-18 10:53:21.570: E/InputDispatcher(2170): channel 'b40044f8 Keyguard (server)' ~ Channel is unrecoverably broken and will be disposed!
12-18 10:53:23.030: E/gralloc_goldfish(2151): gralloc_alloc: Mismatched usage flags: 480 x 800, usage b33
12-18 10:53:23.080: E/(2151): GraphicBufferAlloc::createGraphicBuffer(w=480, h=800) failed (Invalid argument), handle=0x0
12-18 10:53:23.140: E/BufferQueue(2151): [ScreenshotSurface] dequeueBuffer: SurfaceComposer::createGraphicBuffer failed
12-18 10:53:28.070: E/SoundPool(2424): error loading /system/media/audio/ui/Lock.ogg
12-18 10:53:28.110: E/SoundPool(2424): error loading /system/media/audio/ui/Unlock.ogg
12-18 10:53:29.420: E/BluetoothAdapter(2300): Bluetooth binder is null
12-18 10:53:35.860: E/NetdConnector(2170): NDC Command {12 bandwidth setiquota eth0 9223372036854775807} took too long (2654ms)
12-18 10:53:39.770: E/BluetoothAdapter(2424): Bluetooth binder is null
12-18 10:53:39.770: E/BluetoothAdapter(2424): Bluetooth binder is null
12-18 10:53:39.960: E/BluetoothAdapter(2424): Bluetooth binder is null
12-18 10:53:40.680: E/BluetoothAdapter(2424): Bluetooth binder is null
12-18 10:53:42.740: E/BluetoothAdapter(2424): Bluetooth binder is null
12-18 10:53:43.040: E/ConnectivityService(2170): startUsingNetworkFeature took too long: 8936ms
12-18 10:53:44.840: E/logwrapper(2487): executing /system/bin/ip failed: No such file or directory
12-18 10:53:45.260: E/NetdConnector(2170): NDC Command {18 interface fwmark exempt add 10.0.2.2/32} took too long (837ms)
12-18 10:53:45.360: E/JavaBinder(2424): *** Uncaught remote exception! (Exceptions are not yet supported across processes.)
12-18 10:53:45.360: E/JavaBinder(2424): java.lang.RuntimeException: android.os.DeadObjectException
12-18 10:53:45.360: E/JavaBinder(2424): at android.os.Parcel.writeException(Parcel.java:1362)
12-18 10:53:45.360: E/JavaBinder(2424): at android.os.Binder.execTransact(Binder.java:410)
12-18 10:53:45.360: E/JavaBinder(2424): at dalvik.system.NativeStart.run(Native Method)
12-18 10:53:45.360: E/JavaBinder(2424): Caused by: android.os.DeadObjectException
12-18 10:53:45.360: E/JavaBinder(2424): at android.os.BinderProxy.transact(Native Method)
12-18 10:53:45.360: E/JavaBinder(2424): at android.content.IIntentReceiver$Stub$Proxy.performReceive(IIntentReceiver.java:124)
12-18 10:53:45.360: E/JavaBinder(2424): at android.app.ActivityThread$ApplicationThread.scheduleRegisteredReceiver(ActivityThread.java:823)
12-18 10:53:45.360: E/JavaBinder(2424): at android.app.ApplicationThreadNative.onTransact(ApplicationThreadNative.java:394)
12-18 10:53:45.360: E/JavaBinder(2424): at android.os.Binder.execTransact(Binder.java:404)
12-18 10:53:45.360: E/JavaBinder(2424): ... 1 more
I can't print anything in the LogCat, and i dont see any Toast appearing.
Can you please tell me what am i doing wrong.
Your intent-filter is wrong, try to use this one instead:
<intent-filter>
<action android:name="android.intent.action.SIM_STATE_CHANGED" />
</intent-filter>