Android - Comprovar conexion real a internet

 
Vista:
sin imagen de perfil
Val: 197
Plata
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Comprovar conexion real a internet

Publicado por Luis (97 intervenciones) el 14/08/2016 14:11:30
Hola de nuevo, como dice el titulo quiero comprovar que realmente hay conexion a internet mediante Datos o Wify.

He podido utilizar alguno de los muchos tutoriales que existen en la red, pero solo me dicen si estoy conectado o no, y puede ser que este conectado mediante wify y este router no este conectado a internet.

He encontrado este metodo pero no se como aplicarlo, he creado una nueva clase pero no se manejarlo desde el main_Activity.

Les agradeceria si me pudiesen ayudar con algun ejemplo.

Gracias por adelantado.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public static boolean hasActiveInternetConnection(Context context) {
    if (isNetworkAvailable(context)) {
        try {
            HttpURLConnection urlc = (HttpURLConnection) (new URL("http://www.google.com").openConnection());
            urlc.setRequestProperty("User-Agent", "Test");
            urlc.setRequestProperty("Connection", "close");
            urlc.setConnectTimeout(1500);
            urlc.connect();
            return (urlc.getResponseCode() == 200);
        } catch (IOException e) {
            Log.e(LOG_TAG, "Error checking internet connection", e);
        }
    } else {
        Log.d(LOG_TAG, "No network available!");
    }
    return false;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 197
Plata
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Comprovar conexion real a internet

Publicado por Luis (97 intervenciones) el 15/08/2016 15:36:12
Gracias por la respuesta ya vi ese post pero como digo en el método comprobar Wify si estás conectado al router te dará que tienes conexión pero si el router no está conectado a Internet será falso por eso se necesitaría un método que hiciese un ping a algún servidor para comprobar que es cierta la conexión.

Gracias de todos modos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Comprovar conexion real a internet

Publicado por matator (1 intervención) el 16/08/2016 07:46:11
Eso lo puedes hacer con la librería net de java, haciendo un ping a un sitio q sepas q siempre va.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 197
Plata
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Comprovar conexion real a internet

Publicado por Luis (97 intervenciones) el 16/08/2016 10:37:39
Gracias podrías pasar algún tutorial para seguir o ejemplo??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 2 puestos en Android (en relación al último mes)
Gráfica de Android

Comprovar conexion real a internet

Publicado por Edgar (1 intervención) el 11/11/2016 12:55:08
Hola Carlos,

Estoy utilizando el código mencionado para un app pero me da el siguiente error: "Caused by: java.lang.SecurityException: ConnectivityService: Neither user 10087 nor current process has android.permission.ACCESS_NETWORK_STATE."

Tengo el permiso mencionado en el manifest justo despues del "</activity>" y antes del "</application>" el permiso que utilizo es el "<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>".

Alguna idea de por que puede fallar ??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 197
Plata
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Comprovar conexion real a internet

Publicado por Luis (97 intervenciones) el 11/11/2016 14:52:33
Hola mira habe que seguro te falta algún permiso ya nos cuentas.
Y agradecería comentase como ha desarrollado la comprobación.
Saludos


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.example.com.es" platformBuildVersionCode="24" platformBuildVersionName="7.0">
	<uses-sdk android:minSdkVersion="13" android:targetSdkVersion="24" />
	<uses-permission android:name="android.permission.VIBRATE" />
	<uses-permission android:name="android.permission.WAKE_LOCK" />
	<uses-permission android:name="android.permission.INTERNET" />
	<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
	<application android:theme="null" android:label="Activitymain" android:icon="res/mipmap-mdpi-v4/ic_launcher.png" android:debuggable="true" android:allowBackup="true" android:supportsRtl="true">
		<activity android:name="com.example.com.esMainActivity">
			<intent-filter>
				<action android:name="android.intent.action.MAIN" />
				<category android:name="android.intent.category.LAUNCHER" />
			</intent-filter>
		</activity>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 2 puestos en Android (en relación al último mes)
Gráfica de Android

Comprovar conexion real a internet

Publicado por Edgar (1 intervención) el 30/11/2016 09:23:23
Hola Luis,

Ya e descubierto el fallo, estaba en que yo colocaba los permisos entre el <activity> y </activity>, ahora siguiendo el ejemplo que colocas, e puesto los permisos antes del mencionado <activity>. Ahora ya funciona.


Aun que al principio tenía el ejemplo del compañero Carlos Sánchez, tuve algun problema con el Android Studio y al final coloque otro que busque por internet.


MANIFEST
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.edgar.comprobarconexioninternet"
          xmlns:android="http://schemas.android.com/apk/res/android">
 
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <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=".V1_MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
 
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>
 
 
 
</manifest>


JAVA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
public class V1_MainActivity extends AppCompatActivity {
 
    private Button cV1B01;
 
    private TextView cV1TV01;
    private TextView cV1TV02;
    private TextView cV1TV03;
 
 
 
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.v1_main_activity);
 
 
        cV1B01 = (Button) findViewById(R.id.button);
 
        cV1TV01 = (TextView) findViewById(R.id.V1TV01);
        cV1TV02 = (TextView) findViewById(R.id.V1TV02);
        cV1TV03 = (TextView) findViewById(R.id.V1TV03);
 
 
 
        cV1B01.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
 
                Boolean temp;
 
                temp = isNetworkConnected();
 
                System.out.println(temp ? "print CON conexion": "print SIN conexion");
 
 
                Log.v("print", Boolean.toString(temp));
 
                if(temp == true){
                    cV1TV03.setText("CONECTADO");
                    cV1TV03.setTextColor(getResources().getColor(R.color.green));
                }else{
                    cV1TV03.setText("DESCONECTADO");
                    cV1TV03.setTextColor(getResources().getColor(R.color.red));
                }
 
 
 
                /* -------------------------------------------- */
 
                WifiManager wifiMgr = (WifiManager) getSystemService(WIFI_SERVICE);
                WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
                int ip = wifiInfo.getIpAddress();
                String ipAddress = Formatter.formatIpAddress(ip);
 
                cV1TV01.setText(ipAddress);
 
                Log.d("IP PRIVADA", ipAddress);
 
                /* -------------------------------------------- */
 
 
 
 
                /* OBTENER NOMBRE SSID */
 
 
            }
        });
 
 
    }
 
 
 
    private boolean isNetworkConnected() {
        ConnectivityManager connectivityManager
                = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
        return activeNetworkInfo != null && activeNetworkInfo.isConnected();
    }
 
 
}


LAYOUT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.edgar.comprobarconexioninternet.V1_MainActivity">
 
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" android:id="@+id/EST_WIFI"
            android:longClickable="true">
            <LinearLayout
                android:orientation="horizontal"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceLarge"
                    android:text="@string/estWiFi"
                    android:id="@+id/textView"/>
                <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
                          android:textAppearance="?android:attr/textAppearanceLarge"
                          android:id="@+id/V1TV01"/>
            </LinearLayout>
            <LinearLayout android:orientation="horizontal" android:layout_width="match_parent"
                              android:layout_height="wrap_content">
                <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
                          android:textAppearance="?android:attr/textAppearanceLarge"
                          android:text="@string/nomWiFi" android:id="@+id/textView5"/>
                <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
                          android:textAppearance="?android:attr/textAppearanceLarge"
                          android:id="@+id/V1TV02"/>
            </LinearLayout>
        </LinearLayout>
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="20dp">
        </LinearLayout>
        <LinearLayout android:orientation="horizontal" android:layout_width="match_parent"
                      android:layout_height="wrap_content" android:id="@+id/EST_CON">
            <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
                      android:textAppearance="?android:attr/textAppearanceLarge"
                      android:text="@string/estInt" android:id="@+id/textView3"/>
            <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
                      android:textAppearance="?android:attr/textAppearanceLarge"
                      android:id="@+id/V1TV03"/>
        </LinearLayout>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button" android:layout_gravity="center_horizontal"/>
    </LinearLayout>
</RelativeLayout>

Le dado mis retoques personales ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 197
Plata
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Comprovar conexion real a internet

Publicado por Luis (97 intervenciones) el 30/11/2016 10:10:31
Me alegro que lo solucionase a muchos les servirá.

Aunque en este ejemplo tampoco se obtiene la conexión Real.
Se debería hacer una petición a un servidor externo para saber si realmente estás conectado ya que por Wify un router podría no estar conectado a la red.

Se agradece algún ejemplo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar