2014-12-02 49 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