2011-12-16 87 views
0

請查看代碼如何檢測的WiFi連接到設備

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


}// 

}

我想就當只有設備與無線網絡連接的按鈕,但使用上面的代碼條件成爲真,如果設備也連接邊緣/ gprs 請問我該怎麼做

+0

可能重複的[如何查看是否無線網絡連接在機器人(http://stackoverflow.com/questions/3841317/how-to-see-if-wifi-is-connected-in -android) – 2011-12-16 12:00:36

回答

1

我用這個代碼來檢查WiFi和移動網絡連接同時,

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;  
     } 
    } 
} 
相關問題