2017-06-14 2 views
1

Wie kann überprüft werden, ob Wi-Fi Direct auf einem Gerät aktiviert ist?Android check Wi-Fi Direct ist aktiviert

ich Wi-Fi in der folgenden Art und Weise habe versucht, zu überprüfen:

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

aber es gibt Geräte, die keine gleichzeitigen WLAN und Wi-Fi Direct (Huawei Honor 4C unterstützen, schaltet es down Wi-Fi, wenn Sie Wi-Fi Direct aktivieren), so funktioniert dieser Weg nicht.

-WIFI_P2P_STATE_CHANGED_ACTION Zuhören in BroadcastReceiver wie there ist auch nicht akzeptabel, weil es nur dann ausgelöst wird, wenn ich eine Aktion mit Wi-Fi Direct (wie der Entdeckung) zu starten, aber ich muß vor seinem Status überprüfen.

+0

Mögliche Duplikat [WiFi Direkt Status] (https://stackoverflow.com/questions/20034736/wifi-direct-status) – Basix

+0

Check it out [https://stackoverflow.com/questions/21533616/is-it-possible-to-connect-two-or-more-wifi-direct-groups?rq=1](https://stackoverflow.com/questions/ 21533616/is-it-possible-to-connect-zwei-oder-mehr-wifi-direkt-gruppen? Rq = 1) –

Antwort

0

Sie sollten den ConnectivityManager verwenden können, um den Status des Wi-Fi zu erhalten.

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

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

Bitte überprüfen Sie die Erlaubnis in einem offenkundigen ACCESS_NETWORK_STATE & & INTERNET.

+0

Hier geht es um Wi-Fi, nicht Wi-Fi Direct. Und diese Methode ist veraltet. – Artyom

1

können Sie tun, indem WifiDirectBroadcastReceiver wie folgt aus:

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

Dies ist ein Code aus einer Antwort, die ich in Frage gestellt habe. Es ist in meinem Fall nicht akzeptabel. – Artyom

Verwandte Themen