2014-11-24 33 views
1

我在應用程序的調用onStart查詢手機的wifi狀態,但即使連接它返回false,我已經嘗試過很多事情,但沒有奏效wifi的狀態返回假,即使它是連接

這裏就是我做

@Override protected void onStart() { 
    super.onStart(); 
    onStartStates(); 
} 

onStartStates()方法

private void onStartStates(){ 

    ConnectivityManager cm = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo net = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 

    Log.d(TAG, "Wifi State 1"+net.isConnected()); 
    Log.d(TAG, "Wifi State 2"+getCurrentSsid(esActivity.this)); 
} 

getCurrentSsid()方法

public static String getCurrentSsid(Context context) { 
    WifiInfo wifiInfo = getCurrentWifiInfo(context); 
    if (wifiInfo != null) { 
     return wifiInfo.getSSID(); 
    } 
    return null; 
} 

public static WifiInfo getCurrentWifiInfo(Context context) { 
    final ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    final NetworkInfo networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
    if (networkInfo != null && networkInfo.isConnected()) { 
     final WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 
     return wifiManager.getConnectionInfo(); 
    } 

    return null; 
} 

兩個方法返回false,即使我切換WiFi打開剛開始我的應用程序...任何想法

+0

嘗試將您的代碼從onStart()移動到onCreateView()。很多時候,用於檢查狀態和類似情況的metod在早期的活動生命週期中不可用。 – SeahawksRdaBest 2014-11-24 17:07:35

+0

你是否在清單中添加了適當的執行? – KOTIOS 2014-11-24 17:10:04

+0

是的,我有這方面的所有權限 – user3290805 2014-11-24 17:54:46

回答

0

試試下面的方法來檢測設備是否有網絡連接。獲取當前活動的網絡可能會對您有所幫助。

/** 
* Check for <code>TYPE_WIFI</code> and <code>TYPE_MOBILE</code> connection 
* using <code>isConnected()</code> Checks for generic Exceptions and writes 
* them to LogCat as <code>CheckConnectivity Exception</code>. Make sure 
* AndroidManifest.xml has appropriate permissions. 
* 
* @param con 
*   Application context 
* @return Boolean 
*/ 
public static boolean hasConnectivity(Context con) 
{ 
    ConnectivityManager connectivityManager; 
    NetworkInfo   wifiInfo; 
    NetworkInfo mobileInfo; 
    try 
    { 
     connectivityManager = (ConnectivityManager) con.getSystemService(Context.CONNECTIVITY_SERVICE); 

     NetworkInfo netInfo = connectivityManager.getActiveNetworkInfo(); 
     boolean serviceAvailable = (netInfo!=null && netInfo.isConnected())? true:false; 

     wifiInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
     mobileInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
     if (wifiInfo.isConnected() || mobileInfo.isConnected() || serviceAvailable) 
     { 
      Logger.info(TAG + " : " + true); 
      return true; 
     } 
    } 
    catch (Exception e) 
    { 
     Logger.info(TAG + ": hasConnectivity: Exception: " + e.getMessage()); 
    } 
    Logger.error(TAG + " : " + false); 
    return false; 
} 
+0

它與我的代碼有什麼不同? – user3290805 2014-11-24 20:19:07

+0

它幾乎相同,但我也檢查當前活動的網絡 NetworkInfo netInfo = connectivityManager.getActiveNetworkInfo(); 給它嘗試並回到我身邊。 – 2014-11-24 20:22:50

+0

它返回false ...仍然 – user3290805 2014-11-25 09:38:41

相關問題