Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android check Wi-Fi Direct已激活_Android_Wifi Direct_Wifip2p - Fatal编程技术网

Android check Wi-Fi Direct已激活

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时,它会

如何检查设备上是否激活了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时,它会关闭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。这个方法是不推荐的。这是一个答案中的代码,我在问题中链接到。这对我来说是不可接受的。