在android中获取wifi连接广播事件时出现问题
我正在尝试通过一个按钮来实现一个活动,当单击该按钮时,可以打开和关闭wifi状态。打开和关闭都可以,但同时,我想相应地更改按钮的颜色或图像,即打开时图像不同,关闭时图像不同。为此,我创建了一个意图过滤器和一个广播接收器函数。在广播接收器中,我正在检查多个系统事件,如电源连接/断开、电池更换、wifi打开/关闭等。问题是我没有收到wifi状态更改的消息-我确实收到了电池和电源相关的消息,但没有收到wifi(注:我在蓝牙打开/关闭通知方面也有同样的问题)。有谁能告诉我出了什么问题吗?代码如下:在android中获取wifi连接广播事件时出现问题,android,bluetooth,wifi,Android,Bluetooth,Wifi,我正在尝试通过一个按钮来实现一个活动,当单击该按钮时,可以打开和关闭wifi状态。打开和关闭都可以,但同时,我想相应地更改按钮的颜色或图像,即打开时图像不同,关闭时图像不同。为此,我创建了一个意图过滤器和一个广播接收器函数。在广播接收器中,我正在检查多个系统事件,如电源连接/断开、电池更换、wifi打开/关闭等。问题是我没有收到wifi状态更改的消息-我确实收到了电池和电源相关的消息,但没有收到wifi(注:我在蓝牙打开/关闭通知方面也有同样的问题)。有谁能告诉我出了什么问题吗?代码如下: pr
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”按钮上单击,我首先调用wifiManager.setWifiEnabled(!enabled),然后调用启动线程并检查wifiManager状态更改的函数。线程将一直运行,直到wifi状态发生变化,或者5秒后没有任何变化。如果状态发生更改,我会向活动发送一个自定义广播,通知此情况。这似乎很好,所以我认为这个问题已经解决了。 < P>也许尝试寻找连接管理器的变化。 intentFilter.addAction(“ConnectivityManager.CONNECTIVITY_ACTION”) 添加“android.net.wifi.wifi\u状态更改”而不是“WifiManager.wifi\u状态更改\u操作”,
因为应该有字符串常量,而不是字符串代码块您使用的是仿真器还是真实设备?WiFi和蓝牙在emulator中不工作。