2014-12-02 42 views
0

我正試圖編寫一個android軟件,它會自動連接到我的大學熱點。檢查是否登錄到熱點

現在,我想知道我是否在當地的熱點或實際上在互聯網上。 我的方法是嘗試解決像「http://google.com」這樣的網站。 如果返回的IP是本地的,我知道我在熱點(但可能不是好的),這要歸功於本地DNS。如果IP是外部的,我會認爲它是谷歌的。但是,我不知道是不是因爲我的大學防火牆,但是當我試圖解決任何主機時,它說:「無法解析主機」http://google.com「:沒有與主機名關聯的地址」 。

這裏是我的代碼:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    TextView tv = (TextView) findViewById(R.id.tv); 

    WifiManager wm = (WifiManager) this.getSystemService(Context.WIFI_SERVICE); 
    WifiInfo wi = wm.getConnectionInfo(); 


    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      String hostName = "http://google.com"; 
      InetAddress hostInetAddress; 
      try { 
       hostInetAddress = InetAddress.getByName(hostName); 
      } catch(UnknownHostException e) { 
       e.printStackTrace(); 
      } 
     } 
    }).start(); 




    wm.getDhcpInfo(); 
    String toto = wm.getDhcpInfo().toString(); 
} 

這裏是我的清單:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.test" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="21" /> 

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

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

回答

0

這工作得很好:

public boolean isNetworkAvailable() { 
    ConnectivityManager cm = (ConnectivityManager) 
     getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo networkInfo = cm.getActiveNetworkInfo(); 
    // if no network is available networkInfo will be null 
    // otherwise check if we are connected 
    if (networkInfo != null && networkInfo.isConnected()) { 
     return true; 
    } 
    return false; 
} 
+0

謝謝你,但它不工作,當我連接到網絡但未登錄時ged-in,它返回true。 – Nicoscolat 2014-12-03 21:50:06

+0

它確實是什麼方法說 - 如果連接返回一個布爾值。什麼不工作? – Martin 2014-12-04 20:24:13

+0

我想檢查我是否登錄了網絡。我們必須在網頁上輸入我們的ID /密碼才能完全訪問互聯網。換句話說,如果我想轉到stackoverflow.com並且我沒有連接,我將被重定向到loggon網頁。在Windows或Android中,我收到一條通知,告訴我必須登錄。我想檢查我是否已登錄 – Nicoscolat 2014-12-04 23:46:50