2011-12-16 8 views
2

してください、次のコードをチェックしrequestRouteToHostは常にfalse

public boolean isOnline() { 

ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
int networkType = ConnectivityManager.TYPE_WIFI; 
return cm.requestRouteToHost(networkType, lookupHost("http://www.ati.ag")); 
//return cm.getActiveNetworkInfo().isConnectedOrConnecting(); 

} 

    public static int lookupHost(String hostname) { 
InetAddress inetAddress; 
try { 
    inetAddress = InetAddress.getByName(hostname); 
} catch (UnknownHostException e) { 
    return -1; 
} 
byte[] addrBytes; 
int addr; 
addrBytes = inetAddress.getAddress(); 
addr = ((addrBytes[3] & 0xff) << 24) 
     | ((addrBytes[2] & 0xff) << 16) 
     | ((addrBytes[1] & 0xff) << 8) 
     | (addrBytes[0] & 0xff); 
System.out.println(addr); 
return addr; 

}

isOnlineは常にfalseを返し、それは動作しませんどのように助けてください? またはサーバとの接続に 基本的な目的をチェックする他の方法を教えてくださいあなたはInetAddress.getByName、ないURLにホスト名を指定する必要があり、インターネットが

答えて

0

ローカル無線LANで提供されていますかいないことを確認することですので、このラインは、 :

return cm.requestRouteToHost(networkType, lookupHost("http://www.ati.ag")); 

は次のようになります。

return cm.requestRouteToHost(networkType, lookupHost("www.ati.ag")); 

おそらくこれは良い仕事します。

+0

なしには、今はまだ – Ali

+0

を動作していない私はそれについて古い未回答の質問があり実現しています。考えられる1つの説明は、実装されていないということです。参照してください:http://stackoverflow.com/a/2680765/972850 – gimix

0

あなたのアプローチの代わりに、あなたの目的がWifiが利用可能かどうかを確認するだけであれば、これを試すことができます。これが私の仕事:

ConnectivityManager cm=(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); 
if(cm==null) 
    return false; 
NetworkInfo networkInfo=cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
if(networkInfo==null) 
    return false; 
return networkInfo.isConnected(); 
+0

質問は、ここで問題を見て、無線LANでインターネットについて話していますhttp://stackoverflow.com/questions/6493517/android-detect-if-デバイス有インターネット接続 –

関連する問題