Apparently ACTION_BATTERY_CHANGED is a โsticky broadcastโ, which means that you can register for it and receive it anytime after its broadcast. To get the connected state, you can do something like:
public void onCreate() { BroadcastReceiver receiver = new BroadcastReceiver() { public void onReceive(Context context, Intent intent) { int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); if (plugged == BatteryManager.BATTERY_PLUGGED_AC) { // on AC power } else if (plugged == BatteryManager.BATTERY_PLUGGED_USB) { // on USB power } else if (plugged == 0) { // on battery power } else { // intent didnt include extra info } } }; IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); registerReceiver(receiver, filter); }
bensnider
source share