【发布时间】:2011-03-23 13:43:45
【问题描述】:
我正在尝试使用一个按钮来实现一个活动,该按钮可以在单击时打开和关闭 wifi 状态。打开和关闭工作,但同时,我想相应地改变按钮的colow或图像,即打开时不同的图像,关闭时不同的图像。为此,我创建了一个意图过滤器和一个广播接收器函数。在广播接收器中,我正在检查几个系统事件,例如电源连接/断开、电池更换、wifi 开/关等。问题是我没有收到关于 wifi 状态更改的消息 - 我确实收到了与电池和电源相关的消息但不适用于wifi(PS。蓝牙开/关通知也有同样的问题)。谁能告诉我可能出了什么问题?代码如下:
protected void onResume() {
super.onResume();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.intent.action.SCREEN_ON");
intentFilter.addAction("android.intent.action.SCREEN_OFF");
intentFilter.addAction("android.intent.action.BATTERY_LOW");
intentFilter.addAction("android.intent.action.BATTERY_OKAY");
intentFilter.addAction("android.intent.action.BATTERY_CHANGED");
intentFilter.addAction("android.intent.action.ACTION_POWER_CONNECTED");
intentFilter.addAction("android.intent.action.ACTION_POWER_DISCONNECTED");
intentFilter.addAction("WifiManager.WIFI_STATE_CHANGED_ACTION");
intentFilter.addAction("BluetoothAdapter.STATE_TURNING_OFF");
intentFilter.addAction("BluetoothAdapter.STATE_ON");
registerReceiver(myReceiver, intentFilter);
}
private BroadcastReceiver myReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
String str = intent.getAction();
displayMessage("In myReceiver, action = " + str);
Log.d("Settings", "Received action: " + str);
if (str.equals("android.intent.action.BATTERY_CHANGED")) {
displayMessage("battery changed...");
} else if (str.equals("android.intent.action.ACTION_POWER_CONNECTED")) {
displayMessage("power connected");
} else if (str.equals("android.intent.action.ACTION_POWER_DISCONNECTED")) {
displayMessage("power disconnected");
} else if (str.equals("WifiManager.WIFI_STATE_CHANGED_ACTION")) {
int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN);
displayMessage("wifi state is " + wifiState);
} else if (str.equals("BluetoothAdapter.STATE_ON")) {
displayMessage("bluetooth on");
} else if (str.equals("BluetoothAdapter.STATE_TURNING_OFF")) {
displayMessage("bluetooth off");
}
}};
【问题讨论】:
-
你用的是模拟器还是真机? WiFi 和蓝牙在模拟器中不起作用。