2012-11-04 25 views
6

Bir program yapıyorum ve internete bağlanmak için wifi kullanmalıyım. Wifi bağlı olup olmadığını kontrol etmek için bazı bilgiler bulabilirsiniz. Ancak bazı durumlarda, wifi AP'yi bağlayabilirsiniz, ancak yine de interneti, wifi için gerekli hesap ve parola gibi https'de sertifika olarak kullanamazsınız, ya da WiFi AP internete bağlanamaz. Peki, gerçek internete nasıl bağlı olabilirim?android bağlı gerçek Internet nasıl kontrol edilir?

cevap

5

www.google.com adresine "Ping" uygulamanızın çok düşük olduğunu unutmayın.

P.S. Cihaz uçak modu veya herhangi bir bağlantı modunda kullanılabilir hiçbir ağda değilse o aşağıdaki yönteme göre .. bizim app bunu yapar

public static boolean isReachable(Context context) { 
    // First, check we have connectivity 
    final ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    final NetworkInfo netInfo = connMgr.getActiveNetworkInfo(); 

    if (netInfo != null && netInfo.isConnected()) { 
     // check if google is reachable 
     try { 
      URL url = new URL("http://www.google.com"); 
      HttpURLConnection urlc = (HttpURLConnection) url.openConnection(); 
      urlc.setRequestProperty("Connection", "close"); 
      urlc.setConnectTimeout(10 * 1000); // Ten seconds timeout in milliseconds 
      urlc.connect(); 
      if (urlc.getResponseCode() == 200) { // success 
       return true; 
      } else { // Fail 
       return false; 
      } 
     } catch (IOException e) { 
      Log.e(TAG, e.getMessage()); 
      return false; 
     } 
    } else { 
     return false; 
    } 
} 
+0

Ping'in iyi bir yol olduğunu düşünüyorum, ancak android4.0'da, bu yöntemin uygulanması için yeni iş parçacığına ihtiyacı var. Yeni iş parçacığı olmadan olabilecek başka yollar var mı? –

+0

Uygulamanızın duyarlılığını sağlamak için ağ öğelerini her zaman ayrı bir iş parçacığına (ana iş parçacığından değil) yapmalısınız. – Frank

+0

mm, tamam, orada orada gerçek Internet –

1

, yöntem, aksi doğru yanlış dönecektir. Yukarıdaki senaryolar tatmin edildiyse, null döndüreceğini unutmayın. Bunun için boş netInfo nesnesini kontrol ederek ele alınır.

public boolean isOnline() { 
ConnectivityManager conManager = 
    (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
NetworkInfo netInfo = conManager .getActiveNetworkInfo(); 
if (netInfo != null && netInfo.isConnectedOrConnecting()) { 
    return true; 
} 
return false; 

}

beyannamesine ağ durumuna erişmek için izin almak unutmayın.

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

aşağıda bakınız lütfen:

ConnectivityManager connectivityManager; 
    NetworkInfo wifiInfo, mobileInfo; 

    public Boolean checkNow(Context con){ 
    try{ 
     connectivityManager = (ConnectivityManager) con.getSystemService(Context.CONNECTIVITY_SERVICE); 
     wifiInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
     mobileInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 

     if(wifiInfo.isConnected() || mobileInfo.isConnected()) 
     { 
      return true; 
     } 
    } 
    catch(Exception e){ 
     System.out.println("CheckConnectivity Exception: " + e.getMessage()); 
    } 

    return false; 
} 

Aşağıda gibi sizin onCreate() Yönteminde yukarıda yöntemi kullanın:

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     boolean con = checkNow(getApplicationContext()); 

     if(con){ 
      Toast.makeText(getApplicationContext(), "Connection Founded", Toast.LENGTH_SHORT).show(); 
     }else{ 
      Toast.makeText(getApplicationContext(), "Connection Not Founded", Toast.LENGTH_SHORT).show(); 
     } 

} 

sizi

boolean değeri döndürmek bir yöntemim olsun internet bağlantısı varsa "Connection Founded" olarak sorulacak uygulamayı çalıştırın Cihazınızda ilâve etmek aksi takdirde "Connection Not Founded"'u soracaktır.

İlgili konular