2012-05-02 2 views
6

мне нужно проверить, имеется ли или нет в Android интернет, поэтому я попытался с помощью следующей функции:подключения к Интернету в Android

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

И я также добавил необходимые разрешения в манифесте:

<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"/> 

Но он по-прежнему бросает исключения:

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) 

Можете ли вы сказать мне, что Happe здесь?

+2

Глупый вопрос, но ваши права в правой части манифесте? Как и раньше, перед тегом ? –

+3

'' отсутствует косая черта. Может возникнуть проблема с анализом XML, я не уверен, но в любом случае он должен иметь косую черту. –

+0

@ Sandervan'tVeer да, я сделал это вне приложения от тега приложения и некоторое время глупый вопрос также учат много вещей – user1343673

ответ

10

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" > отсутствует конечный слэш. Может возникнуть проблема с анализом XML, что может привести к неправильному синтаксическому анализу следующего <uses-permission ...>.

2

Вы должны установить вне разрешения по прикладному тэгу в Manifest.xml

И как это должно работать:

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

попробовать, как это,

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(); 
      } 

     } 
    } 

Добавьте это разрешение в манифест <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> (отметьте отметку разрешения над тегом приложения)

1

Попробуйте этот код

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

вам просто нужно разместить разрешение выше вашего приложения Tag в Andriod манифеста

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