我的目的是保存在首选项Android设备USB /电源线的首选状态:已连接/已断开连接.从开发人员站点我看到有两个Intent用于获取该状态:ACTION_POWER_CONNECTED/DISCONNECTED.所以我使用了与开发人员发布的代码相同的代码:
http://developer.android.com/training/monitoring-device-state/battery-monitoring.html
在监控充电状态的变化部分.
表现
<receiver android:name=".PowerConnectionReceiver">
<intent-filter>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
Java代码
public class PowerConnectionReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
Toast.makeText(context, "pvr = " + usbCharge + ", " + acCharge + "," + isCharging, Toast.LENGTH_SHORT).show();
}
}
Run Code Online (Sandbox Code Playgroud)
当我插入USB电缆IN/OUT时,广播总是正确地发送并在PowerConnectionReceiver中捕获但总是具有相同的结果(=电缆已拔出).
我用Galaxy Nexus 4.1.1/4.2.1测试了它 - 我总是在Toast中获得2xFALSE(chargePlug = FALSE,usbCharge = FALSE).
为什么 intent.getIntExtra(BatteryManager.EXTRA_PLUGGED,-1)总是返回默认值"-1"?
谢谢.
PS.如果我在Java中注册接收器,一切正常
Intent …Run Code Online (Sandbox Code Playgroud) 有没有人知道如何Ice Cream Sandwich使用WRITE_APN_SETTINGS权限为" " 编写应用程序?WRITE_APN_SETTINGS现在被忽略ICS,代码触摸APN失败.