2014-10-20 2 views
0

В моем приложении Android я хотел бы проверить, может ли пользователь получить доступ в Интернет. Я знаю, что могу проверить, подключен ли он к Wi-Fi или 3G/4G и т. Д., Но, возможно, пользователь подключен к локальной сети и не имеет доступа к Интернету.Android: проверьте, может ли устройство получить доступ к Интернету

Должен ли я попробовать «ping» для google, чтобы быть уверенным в том, что он может что-то загрузить или существует ли функция, которая гарантирует, что у телефона есть интернет?

Спасибо.

+1

возможно дубликат [Detect, если Android устройство имеет подключение к Интернету] (HTTP : //stackoverflow.com/questions/6493517/detect-if-android-device-has-inter net-connection) –

+0

Да, спасибо за ссылку;) – psv

ответ

0

Если вы хотите проверить, имеет ли пользователь доступ к Интернету, когда у него есть соединение, попробуйте связаться с веб-сайтом, например google, с некоторым таймаутом.

URL url = new URL("https://google.com"); 

    HttpURLConnection urlc = (HttpURLConnection) url.openConnection(); 
    urlc.setRequestProperty("Connection", "close"); 
    urlc.setConnectTimeout(1000 * 30); 
    urlc.connect(); 
    if (urlc.getResponseCode() == 200) { 
     return true; 
    } 

Если у вас есть тайм-аут или код ошибки, вы можете предположить, что ваше приложение не подключено к Интернету.

+0

Хорошо, это кажется хорошим. Я проверю ваш код. Большое спасибо – psv

+0

Ваше приветствие, если у вас есть еще вопросы, дайте мне знать. – furkan3ayraktar

0
private boolean isNetworkAvailable() { 
ConnectivityManager connectivityManager 
     = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 
return activeNetworkInfo != null && activeNetworkInfo.isConnected(); 

}

AndroidManifest:

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

Но это уже был дан ответ здесь:

Here

+0

См. Http://stackoverflow.com/questions/12442893/android-networkinfo-always-returns-true-even-if-internet-is-not-available. isConnected() возвращает true, даже если пользователь подключен только к локальной сети. Это проблема, которую я хочу избежать. – psv

Смежные вопросы