Android支票启用Wi-Fi直连

问题描述:

如何检查Wi-Fi Direct是否在设备上激活?Android支票启用Wi-Fi直连

我试图检查无线网络连接方式如下:

WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE); 
return wifiManager.isWifiEnabled(); 

但也有不支持同步的Wi-Fi和Wi-Fi直连(华为Honor 4C设备,它关闭下载Wi-Fi,当你激活Wi-Fi Direct时),所以这种方式不起作用。

WIFI_P2P_STATE_CHANGED_ACTIONBroadcastReceiverthere是不能接受太多,因为只有当我开始与Wi-Fi直接(如发现)一些动作会被触发,但我需要之前检查其状态。

+0

的[wifi直连状态(https://*.com/questions/20034736/wifi-direct-status)可能的复制 – Basix

+0

检查出来[https://*.com/questions/21533616/is-it-possible-to-connect-two-or-more-wifi-direct-groups?rq=1](https://*.com/questions/ 21533616/is-it-it-to-connect-two-or-more-wifi-direct-groups?rq = 1) –

您应该可以使用ConnectivityManager获取Wi-Fi的状态。

ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 

    if (mWifi.isConnected()) { 
     // Do whatever 
    } 

请检查您的许可清单中ACCESS_NETWORK_STATE & & INTERNET。

+0

这是关于Wi-Fi,而不是Wi-Fi Direct。此方法已被弃用。 – Artyom

,你可以做到这一点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 
    } 
} 
} 
+0

这是一个来自答案的代码,我链接的问题。我的情况是不可接受的。 – Artyom