2014-01-22 38 views
0

我在應用程序中編寫了一些代碼來檢查手機是否有wifi連接,我可以做到這一點,它可以工作,但我真正想要檢查的是手機沒有連接到無線網絡,但似乎沒有工作。我想我必須在某個地方有語法錯誤。請看下面的代碼:

如何檢查WiFi沒有連接上android

ConnectivityManager connManager = (ConnectivityManager) 
getSystemService(CONNECTIVITY_SERVICE); 
myWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 

    if (!myWifi.isConnected()){ 
     //do something   
    } 
+1

你的意思是不是工作?返回一個錯誤,什麼都不做 - 什麼? – Katana24

+0

對不起,它似乎並沒有檢查無線網絡。它執行if語句中的代碼是否有無線連接 –

+0

它就好像是!不管用。我以爲 !可能不是此代碼的可靠語法 –

回答

0

隨着ACCESS_NETWORK_STATE許可,您的清單

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 

使用getActiveNetworkInfo()方法,使用這種方法:

private boolean notConnectedToWifi(){ 
    final ConnectivityManager conMgr = (ConnectivityManager).getSystemService(Context.CONNECTIVITY_SERVICE); 
    final NetworkInfo activeNetwork = conMgr.getActiveNetworkInfo(); 
    if (activeNetwork != null && activeNetwork.isConnected() && activeNetwork.getType() != ConnectivityManager.TYPE_WIFI) 
     return true; 
    else 
     return false; 

} 

接下來你要做的就是在你的條件下調用該方法。實施例

if(notConnectedToWifi){ 
// Oops! You're not connected to wifi! 
} 

注意,我檢查是否activeNetwork經由activeNetwork.isConnected()連接,以便如果所述設備連接到移動網絡中,該方法notConnectedToWifi()將返回false。如果它沒有連接到任何網絡,它也會返回false。

0

試試這個

/*網絡檢查*/

public static boolean haveNetworkConnection(Context context) { 
     boolean haveConnectedWifi = false; 
     boolean haveConnectedMobile = false; 

     ConnectivityManager cm = (ConnectivityManager) context 
       .getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo[] netInfo = cm.getAllNetworkInfo(); 
     for (NetworkInfo ni : netInfo) { 
      if (ni.getTypeName().equalsIgnoreCase("WIFI")) 
       if (ni.isConnected()) 
        haveConnectedWifi = true; 
      if (ni.getTypeName().equalsIgnoreCase("MOBILE")) 
       if (ni.isConnected()) 
        haveConnectedMobile = true; 
     } 
     return haveConnectedWifi || haveConnectedMobile; 
    } 



    if (haveNetworkConnection(youractivityname.this)) { 

    //do your work here .. 
    } 
0

您應該使用BroadcastReciever爲讓您的活動WiFi連接的更新。下面是示例代碼

public class MainActivity extends Activity { 

BroadcastReceiver receiver = new BroadcastReceiver() { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      // TODO Auto-generated method stub 
      ConnectivityManager connectionManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
      NetworkInfo wifi = connectionManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 

      Toast.makeText(MainActivity.this, "Is Wifi connected : "+wifi.isConnected(), Toast.LENGTH_SHORT).show(); 


     } 
    }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

    // initViews(); 

     MainActivity.this.registerReceiver(receiver, new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE")); 
    } 
} 

還寫<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>權限在AndroidManifest.xml中文件

0

ConnectivityManager的幫助下,您將獲得基於追蹤的網絡信息是否連接WIFI

檢查下面的代碼(通過活動上下文):

public boolean IsInternetConnected(Context context) { 
    ConnectivityManager connectivity = (ConnectivityManager) context 
      .getSystemService(Context.CONNECTIVITY_SERVICE); 
    if (connectivity != null) { 
     NetworkInfo nInfo = connectivity.getActiveNetworkInfo(); 
     if (nInfo != null) { 
      //do your thing 
      if (nInfo.getType() == ConnectivityManager.TYPE_WIFI) { 
       // connected to wifi 
       return true; 
      } 

     } 
     return false; 

    } 
    return false; 
} 
相關問題