I want to catch ACTION_SHUTDOWN and BOOT_COMPLETE using BroadcastReceiver. But it turns out that both signals never start BroadcastReceiver (I have not seen any logcat logs). Here is my source code.
I give permission to manifest
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
and I'm trying to register BroadcastReceiver in both directions
protected void onCreate(Bundle savedInstanceState) { registerReceiver(BootReceiver, new IntentFilter(Intent.ACTION_BOOT_COMPLETED)); registerReceiver(ShutDownReceiver, new IntentFilter(Intent.ACTION_SHUTDOWN)); } <receiver android:name=".BootReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.QUICKBOOT_POWERON" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver>
and the source code for BootReceiver and ShutDownReceiver is
private BroadcastReceiver BootReceiver = new BroadcastReceiver() { private String ACTION_BOOT = "android.intent.action.BOOT_COMPLETED"; @Override public void onReceive(Context context, Intent intent) { if(intent.getAction().equals(ACTION_BOOT)){ //my stuff Log.d("Power", "Boot Complete"); } } }; private BroadcastReceiver ShutDownReceiver = new BroadcastReceiver() { private String ACTION_SHUTDOWN = "android.intent.action.ACTION_SHUTDOWN"; @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(ACTION_SHUTDOWN)) { //my stuff Log.d("Power", "Shutdown Complete"); } } };
also, I unregistered as BoradcastReceiver in onDestroy
public void onDestroy() { unregisterReceiver(BootReceiver); unregisterReceiver(ShutDownReceiver); super.onDestroy(); }
Does anyone know what happened to my code? Or am I missing something? Thanks.
source share