2016-03-26 9 views
-6

Erklärung: Ich versuche, mein Gerät, das eine Internetverbindung hat, zu verbinden.Ich habe eine Genehmigung in manifiest sowohl Netzwerkstatus und Internet.Ich überprüfe korrekt mein Gerät ist mit bestimmten Netzwerk.Eg verbunden. W-LAN.Wie kann ich mein Android-Gerät mit einer Internetverbindung in Android überprüfen?

Wie kann ich diese Wifi-Verbindung überprüfen, teilen Sie das Internet.

Hier ist meine Klasse, die zwei Methoden für die Überprüfung der Internetverbindung und Überprüfung der Netzwerkverbindung hat.

Hier ist der Code, wo ich versuche zu überprüfen, ob Gerät mit Internetverbindung oder nicht?

ConnectionDetector cd=new ConnectionDetector(getContext()); 

     if (cd.isConnectingToInternet()) { 
      new TabJson().execute(); 
     } 
     else{ 
      dialog_popup(); 
     } 

Hier ist eine Ausnahme

FATAL EXCEPTION: main 
     java.lang.RuntimeException: Unable to start activity ComponentInfo{com.angelnx.cricvilla.cricvilla/com.angelnx.cricvilla.cricvilla.MainActivity}: android.os.NetworkOnMainThreadException 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135) 
     at android.app.ActivityThread.access$700(ActivityThread.java:143) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241) 
     at android.os.Handler.dispatchMessage(Handler.java:99) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:4950) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:511) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771) 
     at dalvik.system.NativeStart.main(Native Method) 
     Caused by: android.os.NetworkOnMainThreadException 
     at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1118) 
     at java.net.InetAddress.lookupHostByName(InetAddress.java:385) 
     at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236) 
     at java.net.InetAddress.getAllByName(InetAddress.java:214) 
     at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70) 
     at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50) 
     at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340) 
     at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87) 
     at libcore.net.http.HttpConnection.connect(HttpConnection.java:128) 
     at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:315) 
     at libcore.net.http.HttpEngine.connect(HttpEngine.java:310) 
     at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:289) 
     at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:239) 
     at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80) 
     at comman.ConnectionDetector.isConnectingToInternet(ConnectionDetector.java:29) 
     at com.angelnx.cricvilla.cricvilla.HomeFragment.onCreateView(HomeFragment.java:130) 
     at android.support.v4.app.Fragment.performCreateView(Fragment.java:1962) 
     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) 
     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248) 
     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738) 
     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613) 
     at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:330) 
     at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:547) 
     at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1178) 
     at android.app.Activity.performStart(Activity.java:5187) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2083) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)  
     at android.app.ActivityThread.access$700(ActivityThread.java:143)  
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241)  
     at android.os.Handler.dispatchMessage(Handler.java:99)  
     at android.os.Looper.loop(Looper.java:137)  
     at android.app.ActivityThread.main(ActivityThread.java:4950)  
     at java.lang.reflect.Method.invokeNative(Native Method)  
     at java.lang.reflect.Method.invoke(Method.java:511)  
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004)  
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)  
     at dalvik.system.NativeStart.main(Native Method) 

wie kann ich dieses Problem lösen ??? Bitte helfen Sie mir, dieses Problem zu lösen.

+0

haben Sie die Ausnahme gelesen ?? –

+0

ja ich lese eine Ausnahme –

+0

@Milan Verwenden Sie separate Thread für Netzwerktreffer, können Sie es mit AsyncTask tun. – Kathi

Antwort

0

Diese Ausnahme wird ausgelöst, weil Sie in Ihrem Haupt-Thread eine Netzwerkoperation ausführen. Mach es in deinem Hintergrund-Thread. dh AsyncTask

class Task extends AsyncTask<String, void, boolean> { 

private Exception exception; 

protected boolean doInBackground(String... xyz) { 
    if (networkConnectivity()) { 
     try { 
      HttpURLConnection urlc = (HttpURLConnection) (new URL(
        "http://www.google.com").openConnection()); 
      urlc.setRequestProperty("User-Agent", "Test"); 
      urlc.setRequestProperty("Connection", "close"); 
      urlc.setConnectTimeout(3000); 
      urlc.setReadTimeout(4000); 
      urlc.connect(); 
      // networkcode2 = urlc.getResponseCode(); 
      return (urlc.getResponseCode() == 200); 
     } catch (IOException e) { 
      return (false); 
     } 
    } else 
     return false; 
} 


    private boolean networkConnectivity() { 
    ConnectivityManager cm = (ConnectivityManager) _context 
      .getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo networkInfo = cm.getActiveNetworkInfo(); 
    if (networkInfo != null && networkInfo.isConnected()) { 
     return true; 
    } 
    return false; 
} 


} 
+0

Im doInBackground ist nur eine Methode notwendig ?? –

+0

was meinst du ?? – Jois

+0

Ja, ich habe zwei Methoden Bitte sehen Sie meine Post und sagen Sie mir, wo ich mich ändern muss? –

0

ist es, weil Sie httprequest auf Hauptthread aufrufen. Verwenden Sie stattdessen AsyncTask.

+0

Wie kann ich mit der asynctask überprüfen, ob mein Gerät mit dem Internet verbunden ist oder nicht? –

+0

Wenn Sie nichts dagegen haben. Haben Sie etwas Zeit, mich zu erklären? –

+0

hey Bei diesem Problem geht es nicht um die Überprüfung Ihrer Verbindung. Ihre Funktion ist in Ordnung – KDeogharkar

Verwandte Themen