2012-05-02 6 views
6

necesito para comprobar si Internet está disponible o no en Android, por lo que he intentado usar la siguiente función:conectividad de Internet en Android

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

Y también he añadido los permisos necesarios en el manifiesto:

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" > 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 

Pero todavía lanza excepciones:

05-02 16:05:26.226: E/AndroidRuntime(481): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.housedisplay/com.housedisplay.RssActivity}: java.lang.SecurityException: ConnectivityService: Neither user 10038 nor current process has android.permission.ACCESS_NETWORK_STATE. 
05-02 16:05:26.226: E/AndroidRuntime(481): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1736) 
05-02 16:05:26.226: E/AndroidRuntime(481): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1752) 
05-02 16:05:26.226: E/AndroidRuntime(481): at android.app.ActivityThread.access$1500(ActivityThread.java:123) 
05-02 16:05:26.226: E/AndroidRuntime(481): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:993) 
05-02 16:05:26.226: E/AndroidRuntime(481): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-02 16:05:26.226: E/AndroidRuntime(481): at android.os.Looper.loop(Looper.java:126) 
05-02 16:05:26.226: E/AndroidRuntime(481): at android.app.ActivityThread.main(ActivityThread.java:3997) 
05-02 16:05:26.226: E/AndroidRuntime(481): at java.lang.reflect.Method.invokeNative(Native Method) 
05-02 16:05:26.226: E/AndroidRuntime(481): at java.lang.reflect.Method.invoke(Method.java:491) 
05-02 16:05:26.226: E/AndroidRuntime(481): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
05-02 16:05:26.226: E/AndroidRuntime(481): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
05-02 16:05:26.226: E/AndroidRuntime(481): at dalvik.system.NativeStart.main(Native Method) 
05-02 16:05:26.226: E/AndroidRuntime(481): Caused by: java.lang.SecurityException: ConnectivityService: Neither user 10038 nor current process has android.permission.ACCESS_NETWORK_STATE. 
05-02 16:05:26.226: E/AndroidRuntime(481): at android.os.Parcel.readException(Parcel.java:1322) 
05-02 16:05:26.226: E/AndroidRuntime(481): at android.os.Parcel.readException(Parcel.java:1276) 
05-02 16:05:26.226: E/AndroidRuntime(481): at android.net.IConnectivityManager$Stub$Proxy.getActiveNetworkInfo(IConnectivityManager.java:446) 
05-02 16:05:26.226: E/AndroidRuntime(481): at android.net.ConnectivityManager.getActiveNetworkInfo(ConnectivityManager.java:256) 
05-02 16:05:26.226: E/AndroidRuntime(481): at com.housedisplay.RssActivity.isNetworkAvailable(RssActivity.java:218) 
05-02 16:05:26.226: E/AndroidRuntime(481): at com.housedisplay.RssActivity.onCreate(RssActivity.java:59) 
05-02 16:05:26.226: E/AndroidRuntime(481): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048) 
05-02 16:05:26.226: E/AndroidRuntime(481): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1700) 

¿me puede decir qué está Happe ¿Por aquí?

+2

pregunta tonta, pero son sus permisos en la parte derecha de su manifiesto? Como en, antes de la etiqueta ? –

+3

'' falta una barra diagonal. Podría causar problemas para analizar XML, no estoy seguro, pero debería tener una barra final de todos modos. –

+0

@ Sandervan'tVeer sí lo tengo en fuera de la etiqueta de la aplicación y en algún momento pregunta tonta también enseña muchas cosas – user1343673

Respuesta

10

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" > no se encuentra una barra final. Puede causar problemas al analizar XML, lo que podría causar que el siguiente <uses-permission ...> no se analice correctamente.

2

Es necesario configurar el exterior de la autorización de su aplicación de etiqueta en el Manifest.xml

Y como esto debería funcionar:

private boolean connectionChecker() { 
    // ConnectivityManager casten 
    connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 

    // boolean für networkinfo holen 
    activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 
    // Returnt true oder false if not null 
    return activeNetworkInfo != null; 
} 
1

tratan como este,

private void checkNetworkState() { 
     // TODO Auto-generated method stub 
     ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo activeNetworkInfo = connectivityManager 
       .getActiveNetworkInfo(); 

     if (activeNetworkInfo == null) { 

      Toast.makeText(this, "Network Not Connected...Please Try Again", 
        Toast.LENGTH_LONG).show(); 

     } else { 
      if (activeNetworkInfo.isConnected()) { 

       try { 
        << Your Task>>> 

       } catch (Exception e) { 
        // TODO Auto-generated catch block 
        System.out.println("Inside the Exception" + e.getMessage()); 
       } 

      } else if (activeNetworkInfo.isConnectedOrConnecting()) { 

       Toast.makeText(this, 
         "Network is connecting Now please patient", 
         Toast.LENGTH_LONG).show(); 
      } 

     } 
    } 

Agregue este permiso en el manifiesto <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> (coloque la etiqueta de permiso encima de la etiqueta de la aplicación)

1

Prueba este código

public boolean isNetworkOnline() { 
boolean status=false; 
try{ 
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo netInfo = cm.getNetworkInfo(0); 
    if (netInfo != null && netInfo.getState()==NetworkInfo.State.CONNECTED) { 
     status= true; 
    }else { 
     netInfo = cm.getNetworkInfo(1); 
     if(netInfo!=null && netInfo.getState()==NetworkInfo.State.CONNECTED) 
      status= true; 
    } 
}catch(Exception e){ 
    e.printStackTrace(); 
    return false; 
} 
return status; 

} 
0
NetworkInfo i = conMgr.getActiveNetworkInfo(); if (i == null) 
    return false; if (!i.isConnected()) 
    return false; if (!i.isAvailable()) 
    return false; return true; 
0

sólo tiene que colocar el permiso por encima de la etiqueta de aplicación en Andriod Manifiesto

Cuestiones relacionadas