2016-05-24 9 views
0

Ich versuche, einfache Ping-App auf Android schreiben, aber es funktioniert nicht. Es funktioniert nicht mehr, wenn ich versuche, die IP-Adresse zu pingen. hier ist der CodeAndroid App für Ping funktioniert nicht

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

Button pingbtn = (Button) findViewById(R.id.Ping_btn); 
    final TextView Ipinfo = (TextView) findViewById(R.id.Ping_info); 
    final EditText Ipfield = (EditText) findViewById(R.id.Ip_field); 
    Ipfield.setText("127.0.0.1"); 
    pingbtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Editable host = Ipfield.getText(); 

      InetAddress Address = null; 
      try 
      { 
       Address = InetAddress.getByName(host.toString()); 
      } 
      catch (UnknownHostException e) 
      { 
      e.printStackTrace(); 
      } 
       try { 
        if (Address.isReachable(5000)) { 
         Ipinfo.append("\n" + host + "- Response ok"); 
        } else { 
         Ipinfo.append("\n" + host); 
        } 
       } 
     catch(IOException e) 
      { 
       Ipinfo.append("\n "+ e.toString()); 
      } 
     } 
    }); 

} 

}

Und hier ist Fehler

FATAL AUSNAHME: Haupt Prozess: com.example.reaper.simpleping, PID: 15226 android.os.NetworkOnMainThreadException unter android.os.StrictMode $ AndroidBlockGuardPolicy.onNetwork (StrictMode.java:1147) bei libcore.io.BlockGuardOs.connect (BlockGuardOs.java:110) bei libcore.io.IoBridge.connectErrno (IoBridge.java:154) bei libcore.io.IoBridge.connect (IoBridge.java:122) bei java.net.InetAddress.isReachable (InetAddress.java:761) bei java.net.InetAddress.isReachable (InetAddress.java:715) bei java.net.InetAddress.isReachable (InetAddress.java:685) bei com.example.reaper.simpleping.MainActivity $ 1.onClick (MainActivity.java: 43) bei android.view.View.performClick (View.java:4756) bei android.view.View $ PerformClick.run (View.java:19749) bei android.os.Handler.handleCallback (Handler.java: 739) bei android.os.Handler.dispatchMessage (Handler.java:95) bei android.os.Looper.loop (Looper.java:135) bei android.app.ActivityThread.main (ActivityThread.java:5221) bei java. lang.reflect.Method.invoke (Native Methode) bei java.lang.reflect.Method.invoke (Methode.java:372) um com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java: 899) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java:694)

ich kann nicht verstehen, was ein Problem ist, und helfen Sie mir bitte ho finden w behebe diesen Fehler. danke für Aufmerksamkeit.

+0

Abfrage für 'NetworkOnMainThreadException' Sie viele andere nützliche Informationen finden werden. Ich schlage vor, sich auf 'AsynkTask', 'Handler',' Thread' oder sogar andere 'Aufgaben' zu konzentrieren. – Bonatti

Antwort

0

Als @dhiku sagte, es wird stark davon abgeraten, aber Sie können dieses Stück Code ausführen, um alle Arten von Threads zu ermöglichen. Führen Sie in Ihrem onCreate() nach dem Einstellen der Inhalte:

//allow all threading policies 
    if(Build.VERSION.SDK_INT >9){ 
     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 
    } 
+0

Seine Arbeiten, mein Dank, Leute – Antoni

0

Die Ausnahme, die ausgelöst wird, wenn eine Anwendung versucht, im Hauptthread eine Netzwerkoperation auszuführen.

Dies wird nur für Anwendungen ausgelöst, die auf das Honeycomb SDK oder höher abzielen. Anwendungen, die auf frühere SDK-Versionen abzielen, dürfen in ihren Main-Event-Loop-Threads ein Netzwerk erstellen, aber es wird davon abgeraten. Siehe das Dokument Designing for Responsiveness.

Verwandte Themen