我在我的应用程序中使用以下示例页面中的代码来监控设备何时连接/断开电源适配器:
http://developer.android.com/training/monitoring-device-state/battery-monitoring.html
所以我的清单中有:
<receiver android:name=".StatusChangeReceiver">
<intent-filter>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
</intent-filter>
</receiver>
我的课看起来像这样:
public class StatusChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean isActive = prefs.getBoolean("isActive", false);
if (isActive){
int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL;
// Do somthing with isCharging here
}
}
但是 isCharging 总是假的,不管电源是连接还是断开。我显然在调试时遇到了问题,因为我必须继续(断开)连接 USB 电缆才能触发事件。
我假设当电源连接时事件被触发并且在我的代码运行之前状态没有更新,但我不确定解决它的最佳方法。有任何想法吗?