Android - Как проверить доступ в Интернет, а не только подключение к Wi-Fi?
Я попробовал приведенный ниже код, чтобы проверить, подключен ли мой мобильный телефон к беспроводной сети, и он работает хорошо, когда я хочу знать, подключен ли мой мобильный телефон к сети, но он не может предоставить информацию об интернет-доступе... что-то вроде "Pinging" на любом сайте.
Фактически я следил за многими ссылками, но ответа пока нет, поэтому я буду благодарен, если кто-нибудь может помочь.
Спасибо в Advance.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Toast t = new Toast(getApplicationContext());
if (isInternetOn()) {
// INTERNET IS AVAILABLE, DO STUFF..
Toast.makeText(ConnectivityTestActivity.this,"Network is Available", Toast.LENGTH_LONG).show();
}
else {
// NO INTERNET AVAILABLE, DO STUFF..
Toast.makeText(ConnectivityTestActivity.this,"No Network Available", Toast.LENGTH_LONG).show();
}
}
public final boolean isInternetOn() {
ConnectivityManager connec = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
// ARE WE CONNECTED TO THE NET
if ( connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED ||
connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTING ||
connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING ||
connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED ) {
// MESSAGE TO SCREEN FOR TESTING (IF REQ)
//Toast.makeText(this, connectionType + " connected", Toast.LENGTH_SHORT).show();
return true;
} else if ( connec.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED || connec.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED ) {
return false;
}
return false;
}}
EDIT:
Следуйте ниже, ссылка содержит отличный ответ для сервера Google Ping и получить результат
qaru.site/info/13929/...
Ответы
Ответ 1
На самом деле я использовал ту же функцию isInternetOn()
, но я удалил условие соединения.
Он должен был проверить статус подключения, если он подключен или нет, и если он пытается подключиться. Это не сработало для меня, поэтому я удалил проверку статуса соединения, а затем сработал.
Спасибо за все ответы.
public final boolean isInternetOn()
{
ConnectivityManager connec = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
// ARE WE CONNECTED TO THE NET
if ( connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED ||
connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED )
{
// MESSAGE TO SCREEN FOR TESTING (IF REQ)
//Toast.makeText(this, connectionType + " connected", Toast.LENGTH_SHORT).show();
return true;
}
else if ( connec.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED
|| connec.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED )
{
return false;
}
return false;
}
Ответ 2
см. образец:
public static boolean isWifiEnabled() {
if ( !gWifiManager.isWifiEnabled()) {
if (mCanShowWifiToast) {
new Thread(mWifiToastControl).start();
G.gHandler.post(mNoWifiRunnable);
}
return false;
} else {
int linkspeed = gWifiManager.getConnectionInfo().getLinkSpeed();
if (linkspeed < 5) {
if (mCanShowWifiToast) {
new Thread(mWifiToastControl).start();
G.gHandler.post(mNoWifiRunnable);
}
return false;
}
}
return true;
}
Ответ 3
Вы можете использовать BroadcastReceivers, которые будут срабатывать при изменении статуса соединения: есть аналогичный вопрос с ответом: Трансляция намерений для режима Bluetooth, Wi-Fi и звонка