2013-09-22 122 views
1

我正在一個Android項目,我試圖檢查如果一個Android設備連接到Wifi,但是,我的功能總是返回false,即使我的設備已成功連接到Wifi。檢查WiFi是否連接返回假即使它連接

在構造函數中我通過調用方法的上下文中的類,並且在構造函數中創建的ConnnectivityManager

下面的實例是構造

public NetworkManagement(Context context) 
{ 
    this.context = context; 
    connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); 
} 

下面是我的功能我遇到了問題

public boolean isConnectedToWifi() 
{ 
    NetworkInfo networkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
    if (networkInfo.isConnected()) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

即使我的設備連接到wifi網絡,並且我可以成功連接到int ernet,上面的函數總是會返回false,但我不明白爲什麼。

感謝您提供的任何幫助。

回答

0
public class NetworkManagement 
{ 
    public Context context; 

    public NetworkManagement(Context context) 
    { 
     this.context = context;  
    } 

    public boolean isConnectedToWifi() 
    { 
     ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo networkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
     if (networkInfo.isConnected()) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 

} 

,並呼籲

//tested with context=getApplicationContext(); 
NetworkManagement a = new NetworkManagement(context); 
Boolean z = a.isConnectedToWifi(); 

ž應該回到它正常

編輯:它仍然不能正常工作的話,我把它。如果它仍然不是這將是一個錯誤在上下文

+0

這幾乎是相同的代碼,我張貼在我的問題 – Boardy

+0

謝謝,我使用getApplicationContext()方法。如果它有任何區別,則應用程序上下文將從服務中檢索並傳遞到同步適配器,然後該同步適配器將用於同步適配器的performSync方法 – Boardy