как обнаружить Wi-Fi подключен к устройству - PullRequest
0 голосов
/ 16 декабря 2011

Пожалуйста, смотрите код

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.second);
     mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
     receiverWifi = new WifiReceiver();
     mIntentFilter = new IntentFilter();
     final IntentFilter mIFNetwork = new IntentFilter();
        mIFNetwork.addAction(android.net.ConnectivityManager.CONNECTIVITY_ACTION); //"android.net.conn.CONNECTIVITY_CHANGE"
        registerReceiver(receiverWifi, mIFNetwork);

     //   mainWifi.startScan();


    haveNetworkConnection() ;
}// end of the function

и

    class WifiReceiver extends BroadcastReceiver {
public void onReceive(Context c, Intent intent) {
//  Toast.makeText(SecondActivity.this, "Message is show", Toast.LENGTH_LONG).show();
//  haveNetworkConnection() ;

    boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);

    if (noConnectivity) {
         ImageButton b=(ImageButton)findViewById(R.id.button4);
         b.setBackgroundResource(R.drawable.lightedbutton_off);
    } else {
         ImageButton b=(ImageButton)findViewById(R.id.button4);
         b.setBackgroundResource(R.drawable.lightedbutton_on);
    }


}//

}

Я хочу включить кнопку, когда только устройство подключено к Wi-Fi, но при использовании вышеуказанного кода условие становится истинным, если устройство также подключено с помощью edge / gprs. Пожалуйста, как я могу это сделать

Ответы [ 4 ]

1 голос
/ 16 декабря 2011

Я использую этот код для проверки Wi-Fi и подключения к мобильной сети,

public boolean isOnline(Context context) {
    boolean state=false;
    ConnectivityManager cm = (ConnectivityManager)
    context.getSystemService(Context.CONNECTIVITY_SERVICE);


    NetworkInfo wifiNetwork =
        cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        if (wifiNetwork != null) {
        state=wifiNetwork.isConnectedOrConnecting();
        System.out.println("wifiNetwork.isAvailable(): "+wifiNetwork.isAvailable());
        System.out.println("wifiNetwork.isConnected(): "+wifiNetwork.isConnected());
        System.out.println("wifiNetwork.isFaileOver(): "+wifiNetwork.isFailover());
        System.out.println("wifiNetwork.isConnectedOrConnecting: "+state);
              }

        NetworkInfo mobileNetwork =
        cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        if (mobileNetwork != null) {
        state=mobileNetwork.isConnectedOrConnecting();
        }

        NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
        if (activeNetwork != null) {
        state=activeNetwork.isConnectedOrConnecting();
        }

        return state;
  }
0 голосов
/ 05 октября 2014

Поздно, но может помочь другим.Я тоже искал способ увидеть изменения состояния Wi-Fi.Существует действие широковещательного намерения, которое можно прослушать с именем NETWORK_STATE_CHANGED_ACTION вместо CONNECTIVITY_ACTION.Этот имеет дело только с изменениями в состоянии Wi-Fi.

http://developer.android.com/reference/android/net/wifi/WifiManager.html#NETWORK_STATE_CHANGED_ACTION

0 голосов
/ 16 декабря 2011

Я думаю, что это поможет:

ConnectivityManager conMgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] netInf = conMgr.getAllNetworkInfo();

boolean noConnectivity = false;

for(NetworkInfo inf : netInf){
    if(inf.getTypeName().contains("WIFI")) {
        if(inf.isConnected()){
           noConnectivity = true;
        }  else{
            //if you wanna do smth else;    
        }
    }
}
0 голосов
/ 16 декабря 2011

Я использую функцию ниже, чтобы проверить, доступна ли сеть (с проверкой типа соединения) в определенный момент.

public boolean isNetworkAvailable() {
    final ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    final NetworkInfo wifiNetInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    final NetworkInfo mobileNetInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

    if (wifiNetInfo != null && wifiNetInfo.isAvailable() && wifiNetInfo.isConnected()) {
                    // we are connected via WiFi
        return true;
    } else if (mobileNetInfo != null && mobileNetInfo.isAvailable() && mobileNetInfo.isConnected()) {
                    // we are connected via mobile data (GPRS, 3G, etc.)
        return true;
    }

    return false;
 }
...