Android check Wi-Fi Direct已激活
如何检查设备上是否激活了Wi-Fi Direct 我尝试通过以下方式检查Wi-Fi:Android check Wi-Fi Direct已激活,android,wifi-direct,wifip2p,Android,Wifi Direct,Wifip2p,如何检查设备上是否激活了Wi-Fi Direct 我尝试通过以下方式检查Wi-Fi: WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE); return wifiManager.isWifiEnabled(); 但有些设备不支持同时使用Wi-Fi和Wi-Fi Direct(华为荣誉4C,当您激活Wi-Fi Direct时,它会
WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
return wifiManager.isWifiEnabled();
但有些设备不支持同时使用Wi-Fi和Wi-Fi Direct(华为荣誉4C,当您激活Wi-Fi Direct时,它会关闭Wi-Fi),因此这种方式不起作用
在
BroadcastReceiver
中收听WIFI\u P2P\u STATE\u CHANGED\u ACTION
也是不可接受的,因为只有在我使用Wi-Fi Direct(如发现)启动某些操作时才会触发它,但我需要在之前检查它的状态。您应该能够使用ConnectionManager获取Wi-Fi的状态
ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (mWifi.isConnected()) {
// Do whatever
}
请检查您在清单访问\u网络\u状态和INTERNET中的权限。您可以通过WifiDirectBroadcastReceiver这样做:
public class WiFiDirectBroadcastReceiver extends BroadcastReceiver {
private WifiP2pManager mManager;
private WifiP2pManager.Channel mChannel;
public WiFiDirectBroadcastReceiver(WifiP2pManager manager, WifiP2pManager.Channel channel) {
super();
this.mManager = manager;
this.mChannel = channel;
}
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Boolean isEnabled;
if (WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION.equals(action)) {
// check if Wi-Fi is enabled
int state = intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE, -1);
if (state == WifiP2pManager.WIFI_P2P_STATE_ENABLED) {
isEnabled = true;
} else {
isEnabled = false;
}
} else if (WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)) {
// get list of peers by WifiP2pManager.requestPeers()
} else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) {
// Respond to new connections
} else if (WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION.equals(action)) {
// on device's wifi state changes
}
}
}
这是关于Wi-Fi的,不是Wi-Fi Direct。这个方法是不推荐的。这是一个答案中的代码,我在问题中链接到。这对我来说是不可接受的。