Как проверить подключение к Интернету в настоящее время доступно или нет в android
Я хочу также выполнить мое приложение офлайн, поэтому мне нужно проверить, доступно ли в настоящее время подключение к Интернету или нет. Может ли кто-нибудь сказать мне, как проверить, доступен ли интернет или нет в андроиде? Дайте образец кода. Я попытался с кодом ниже и проверил с помощью эмулятора, но он не работает.
public boolean isInternetConnection()
{
ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
return connectivityManager.getActiveNetworkInfo().isConnectedOrConnecting();
}
Спасибо
Ответы
Ответ 1
Это сообщит, если вы подключены к сети:
boolean connected = false;
ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
if(connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED ||
connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) {
//we are connected to a network
connected = true;
}
else
connected = false;
Предупреждение: Если вы подключены к сети WiFi, которая не включает доступ в Интернет или требует аутентификации на основе браузера, connected
все равно будет правдой.
Вам понадобится это разрешение в вашем манифесте:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Ответ 2
Кроме того, имейте в виду, что иногда пользователь будет подключен к сети Wi-Fi, но для этой сети может потребоваться аутентификация на основе браузера. Большинство точек доступа в аэропортах и гостиницах - это так, что вы можете обмануть ваше приложение, чтобы подумать, что у вас есть возможность подключения, а затем любые выборки URL будут получать страницу входа в Hotspot вместо страницы, которую вы ищете.
В зависимости от важности выполнения этой проверки, помимо проверки соединения с ConnectivityManager, я бы предложил включить код, чтобы проверить, что это работающее интернет-соединение, а не просто иллюзия. Вы можете сделать это, пытаясь найти известный адрес/ресурс с вашего сайта, например, изображение 1x1 PNG или 1-байтовый текстовый файл.
Ответ 3
Используйте ниже код:
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
если isNetworkAvailable() возвращает true
то интернет-соединение доступно, в противном случае интернет-соединение недоступно.
Здесь необходимо добавить ниже использует-Разрешение в вашем файле манифеста приложения
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Ответ 4
Вы можете использовать два метода:
1 - для проверки соединения:
private boolean isNetworkConnected() {
ConnectivityManager cm = (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
return cm.getActiveNetworkInfo() != null;
}
2 - для проверки интернета:
public boolean internetIsConnected() {
try {
String command = "ping -c 1 google.com";
return (Runtime.getRuntime().exec(command).waitFor() == 0);
} catch (Exception e) {
return false;
}
}
Добавить разрешения для манифеста:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
Ответ 5
Вы можете просто попытаться установить TCP-соединение с удаленным хостом:
public boolean hostAvailable(String host, int port) {
try (Socket socket = new Socket()) {
socket.connect(new InetSocketAddress(host, port), 2000);
return true;
} catch (IOException e) {
// Either we have a timeout or unreachable host or failed DNS lookup
System.out.println(e);
return false;
}
}
Тогда:
boolean online = hostAvailable("www.google.com", 80);
Ответ 6
используйте следующий код:
public static boolean isNetworkAvaliable(Context ctx) {
ConnectivityManager connectivityManager = (ConnectivityManager) ctx
.getSystemService(Context.CONNECTIVITY_SERVICE);
if ((connectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) != null && connectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED)
|| (connectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_WIFI) != null && connectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
.getState() == NetworkInfo.State.CONNECTED)) {
return true;
} else {
return false;
}
}
помните, что вам нужно добавить в свою манифест следующую строку:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Ответ 7
Используйте метод checkConnectivity:
if (checkConnectivity()){
//do something
}
Способ проверить вашу связь:
private boolean checkConnectivity() {
boolean enabled = true;
ConnectivityManager connectivityManager = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = connectivityManager.getActiveNetworkInfo();
if ((info == null || !info.isConnected() || !info.isAvailable())) {
Toast.makeText(getApplicationContext(), "Sin conexión a Internet...", Toast.LENGTH_SHORT).show();
return false;
} else {
return true;
}
return false;
}
Ответ 8
public boolean isOnline() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true;
} else {
return false;
}
}
Google рекомендует этот блок кода. Использовать этот. Потому что устройство может быть не подключено к Интернету, даже если оно подключено к Wi-Fi. Wi-Fi может быть не подключен к Интернету
Ответ 9
public boolean isInternetConnection()
{
ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
if(connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED ||
connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) {
//we are connected to a network
return true;
}
else {
return false;
}
}
Ответ 10
Нет подключения к Интернету. Хорошая библиотека. Используйте это для проверки мгновенного подключения. Https://github.com/appwise-labs/NoInternetDialog
Ответ 11
попробуйте использовать ConnectivityManager
ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null) {
for (int i = 0; i < info.length; i++) {
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
}
}
return false
Также добавьте разрешение на AndroidManifest.xml
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Ответ 12
package com.base64;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Base64;
import android.widget.ImageView;
import android.widget.Toast;
import com.androidquery.AQuery;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(isConnectingToInternet(MainActivity.this))
{
Toast.makeText(getApplicationContext(),"internet is available",Toast.LENGTH_LONG).show();
}
else {
System.out.print("internet is not available");
}
}
public static boolean isConnectingToInternet(Context context)
{
ConnectivityManager connectivity =
(ConnectivityManager) context.getSystemService(
Context.CONNECTIVITY_SERVICE);
if (connectivity != null)
{
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null)
for (int i = 0; i < info.length; i++)
if (info[i].getState() == NetworkInfo.State.CONNECTED)
{
return true;
}
}
return false;
}
}
/* manifest */
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.base64">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Ответ 13
public static boolean isInternetConnection(Context mContext)
{
ConnectivityManager connectivityManager = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
if(connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED ||
connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) {
//we are connected to a network
return true;
}
else {
return false;
}
}
Ответ 14
Используйте сервис ConnectivityManager
Ссылка на источник
...
...
import android.net.ConnectivityManager;
....
....
public class Utils {
static ConnectivityManager connectivityManager;
....
....
public static String isOnline(Context context) {
JSONArray array = new JSONArray();
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("connected","false");
} catch (JSONException e) {
e.printStackTrace();
}
try {
connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
Log.i("networkInfo", networkInfo.toString());
jsonObject.put("connected",(networkInfo != null && networkInfo.isAvailable() &&
networkInfo.isConnected()));
jsonObject.put("isAvailable",(networkInfo.isAvailable()));
jsonObject.put("isConnected",(networkInfo.isConnected()));
jsonObject.put("typeName",(networkInfo.getTypeName()));
array.put(jsonObject);
return array.toString();
} catch (Exception e) {
System.out.println("CheckConnectivity Exception: " + e.getMessage());
Log.v("connectivity", e.toString());
}
array.put(jsonObject);
return array.toString();
}
}
Ответ 15
Если вы хотите проверить подключение к Интернету, и это изменяет такое отключение Wi-Fi или мобильные данные, вы можете использовать эту библиотеку.
библиотека интернет-соединения