Android: Event ACTION_POWER_CONNECTED is not sent

2019-02-03 16:30发布

I want to do something after the the phone is put into charger. So I created ChargingOnReciever:

public class ChargingOnReceiver extends BroadcastReceiver { 
    public void onReceive(Context context, Intent intent) { 
        context.startActivity(someActivity);
        Log.d(TAG, "Phone was connected to power");
    } 
} 

and I want my receiver to listen to android.intent.action.ACTION_POWER_CONNECTED, so I put this into manifest:

<reciever android:name=".ChargingOnReceiver"
          android:enabled="true"
          android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
    </intent-filter>
</reciever>

But ChargingOnReceiver is apparently not started when I put my G1 to charger (connect to my notebook via USB cable). Any help is much appreciated.

4条回答
趁早两清
2楼-- · 2019-02-03 16:46

It's receiver, not reciever! It took me 5 hours to find this stupid bug. I think that the Android Eclipse plugin should do some syntax checking in the manifest xml.

查看更多
forever°为你锁心
3楼-- · 2019-02-03 16:48

In documentation, write android.intent.action.POWER_CONNECTED without ACTION_.

查看更多
祖国的老花朵
4楼-- · 2019-02-03 16:53

For anyone trying to register receiver for "android.intent.action.ACTION_POWER_CONNECTED" and "android.intent.action.ACTION_POWER_DISCONNECTED" , I would like to add :

As part of the Android 8.0 (API level 26) Background Execution Limits, apps that target the API level 26 or higher can no longer register broadcast receivers for implicit broadcasts in their manifest. However, several broadcasts are currently exempted from these limitations. Apps can continue to register listeners for the exempted broadcasts, no matter what API level the apps target.

The above two broadcasts are no longer in the list of these exempted broadcasts. Please refer the documentation below :

https://developer.android.com/guide/components/broadcast-exceptions

查看更多
何必那么认真
5楼-- · 2019-02-03 16:58
  1. Do not start an activity from a BroadcastReceiver.

  2. Have you examined LogCat at the time you plug in the USB cable to see if there are any logged messages that might explain your problem?

查看更多
登录 后发表回答