我有完全相同的问题,因为这个帖子: 电池广播接收器不工作 。 但似乎没有人回答了这个问题。
这里是我的广播接收器:
public class BatteryLevelReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.v("plugg", "plug change fired");
Toast.makeText(context, " plug change fired", Toast.LENGTH_LONG).show();
}
这里是我的AndroidManifest.xml:
<receiver android:name=".ReceversAndServices.BatteryLevelReceiver">
<intent-filter android:priority="900">
<action android:name="android.intent.action.BATTERY_LOW" />
</intent-filter>
</receiver>
<receiver android:name=".ReceversAndServices.BatteryLevelReceiver">
<intent-filter android:priority="900">
<action android:name="android.intent.action.BATTERY_CHANGED" />
</intent-filter>
</receiver>
我也加入了这一行的清单:
<uses-permission android:name="android.permission.BATTERY_STATS"/>
但仍然没有成功!
我真的很感激,如果有人能告诉我什么,我做错了。
从对ACTION_BATTERY_CHANGED文档 :
你无法通过舱单申报组件收到此,只有通过与Context.registerReceiver明确登记为它()。 见ACTION_BATTERY_LOW,ACTION_BATTERY_OKAY,ACTION_POWER_CONNECTED和ACTION_POWER_DISCONNECTED为被发送,并且可以通过清单接收机接收不同电池相关广播。
现在你知道了:你必须明确地从Java代码注册它。
我只是跟着Android开发者指南对监测电池电量和充电状态 ,不得不立即获得成功。 如果BatteryLevelReceiver是它自己的类,然后我会建议:
<receiver android:name=".BatteryLevelReceiver">
<intent-filter android:priority="900">
<action android:name="android.intent.action.BATTERY_LOW" />
<action android:name="android.intent.action.BATTERY_CHANGED" />
</intent-filter>
</receiver>
加成
我愿意猜测,你写BatteryLevelReceiver在ReceversAndServices嵌套类。 根据接收机作为Android的内部类 ,你不能做到这一点与非静态类。 你可以做BatteryLevelReceiver静态类和登记的onResume()接收器,但是那么你的应用程序将需要运行赶上事件......将您的接收器一个单独的类和注册这些意图:
<receiver android:name=".BatteryLevelReceiver">
<intent-filter android:priority="900">
<action android:name="android.intent.action.BATTERY_LOW" />
<action android:name="android.intent.action.BATTERY_OKAY" />
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
</intent-filter>
</receiver>
(不BATTERY_CHANGED如达山计算指出。)
请确保您有电池接收器类而不是另外一个的子类,但在你的项目中一个单独的类。
也可以尝试使用Context.registerReceiver()方法明确地在你的代码,不要忘记注销它: http://developer.android.com/reference/android/content/Context.html#registerReceiver%28android.content.BroadcastReceiver,% 20android.content.IntentFilter 29%