我做了一個程序,我必須使用wifi來連接互聯網。我找到一些信息來檢查wifi是否連接。但是在某些情況下,您可以連接wifi AP,但您仍然無法使用互聯網,如https所需的無線網絡需要帳戶和密碼以證書,或者wifi AP無法上網。那麼,我如何檢查連接的真實互聯網?如何檢查在android中連接的真實互聯網?
6
A
回答
5
只要做一個「平」到www.google.com機會,他們是下跌非常低。
P.S.這是我們在我們的應用程序做..
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;
}
}
1
按照下面的方法,如果設備不處於飛行模式或沒有任何連接模式下可用的網絡,方法將返回false,否則爲true。請記住,如果上述情況得到滿足,它將返回空值。因此,它通過檢查空的netInfo對象來處理。
public boolean isOnline() {
ConnectivityManager conManager =
(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = conManager .getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true;
}
return false;
}
記住要允許訪問網絡狀態的清單。
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2
請參閱下面:
請返回布爾值的方法:
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;
}
用上面的方法在你的onCreate()
方法如下圖所示:
@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();
}
}
當你運行該應用程序,您將提示爲"Connection Founded"
如果互聯網連接AVA在您的設備中可用,否則會提示"Connection Not Founded"
。
相關問題
- 1. Android:檢查網絡和真實的互聯網連接
- 2. 在Android中檢查互聯網連接
- 3. 在android中檢查互聯網連接
- 4. 在Android上檢查互聯網連接
- 5. 在Android上檢查互聯網連接
- 6. Android連續檢查互聯網連接
- 7. 檢查互聯網連接
- 8. 互聯網連接檢查
- 9. 檢查互聯網連接
- 10. 檢查互聯網連接
- 11. 檢查互聯網連接
- 12. 檢查互聯網連接
- 13. Android互聯網連接檢查
- 14. Android互聯網連接檢查問題
- 15. Android定期檢查互聯網連接
- 16. Android檢查互聯網連接
- 17. 超時檢查互聯網連接Android
- 18. Android,檢查互聯網連接
- 19. Android:檢查互聯網連接
- 20. Android自動檢查互聯網連接
- 21. Android自動檢查互聯網連接
- 22. WinRT如何檢查互聯網連接?
- 23. 如何檢查互聯網連接?
- 24. 在android中檢測互聯網連接
- 25. 如何在android中檢查互聯網連接?
- 26. 如何在android中檢查互聯網連接?
- 27. 在java中檢查互聯網連接
- 28. 在Silverlight中檢查互聯網連接
- 29. 在java中檢查互聯網連接
- 30. 檢查NodeJs中的互聯網連接
我覺得ping是一個好方法,但在android4.0中,這個方法需要新的線程來實現。有沒有其他的方式可以沒有新的線程? –
您應該始終在單獨的線程(而不是主線程)上執行網絡操作,以確保您的應用程序的響應速度。 – Frank
毫米,好吧,我在那裏有一些方法像androidmanager中的wifimanager或networkInfo,可以直接檢查真實的互聯網 –