2011-12-16 2 views
0

Пожалуйста, смотрите кодкак обнаружить Wi-Fi подключен к устройству

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, но использование вышеуказанного состояния кода становится истинным, если устройство также связано с краем/gprs. . Как я могу это сделать?

+0

возможно дубликат [Как увидеть, если Wi-Fi подключен андроида] (http://stackoverflow.com/questions/3841317/how-to-see-if-wifi-is-connected-in -android) –

+0

см. http://stackoverflow.com/a/3841407/329034 – mbwasi

ответ

1

Я использую этот код для проверки 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

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

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; 
} 
0

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

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

Late, но может оказаться полезным для других. Я тоже искал способ увидеть изменения состояния wifi. Существует действие намерения трансляции, которое вы можете прослушивать с именем NETWORK_STATE_CHANGED_ACTION, а не CONNECTIVITY_ACTION. Это касается только изменений в состоянии wifi.

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

Смежные вопросы