wifi的状态返回假,即使它是连接

问题描述:

我在应用程序的调用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

试试下面的方法来检测设备是否有网络连接。获取当前活动的网络可能会对您有所帮助。

/** 
* 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