【发布时间】:2012-04-18 14:31:37
【问题描述】:
我在我的应用程序中使用以下示例页面中的代码来监控设备何时连接/断开电源适配器:
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 电缆才能触发事件。
我认为当连接电源时会触发事件并且在我的代码运行之前状态不会更新,但我不确定解决它的最佳方法。有什么想法吗?
【问题讨论】:
-
好的,所以使用模拟器和远程登录来打开/关闭电源我注意到我总是得到状态 = -1,因此看起来数据没有传递到意图中。不知道为什么。
标签: android