Problem mit App nach update auf 4.3

  • 5 Antworten
  • Letztes Antwortdatum
M

mitch_HD2

Fortgeschrittenes Mitglied
1
Nachdem ich mein S3 auf 4.3 hochgerüstet habe bekomme ich folgende logcat meldung
Code:
01-12 17:18:24.950: D/AndroidRuntime(19258): Shutting down VM
01-12 17:18:24.950: W/dalvikvm(19258): threadid=1: thread exiting with uncaught exception (group=0x41b01700)
01-12 17:18:24.970: E/AndroidRuntime(19258): FATAL EXCEPTION: main
01-12 17:18:24.970: E/AndroidRuntime(19258): java.lang.RuntimeException: Unable to start activity ComponentInfo{mitch.test.ledrgb/mitch.test.ledrgb.RGBActivity}: java.lang.NullPointerException
01-12 17:18:24.970: E/AndroidRuntime(19258): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2295)
01-12 17:18:24.970: E/AndroidRuntime(19258): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349)
01-12 17:18:24.970: E/AndroidRuntime(19258): 	at android.app.ActivityThread.access$700(ActivityThread.java:159)
01-12 17:18:24.970: E/AndroidRuntime(19258): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
01-12 17:18:24.970: E/AndroidRuntime(19258): 	at android.os.Handler.dispatchMessage(Handler.java:99)
01-12 17:18:24.970: E/AndroidRuntime(19258): 	at android.os.Looper.loop(Looper.java:176)
01-12 17:18:24.970: E/AndroidRuntime(19258): 	at android.app.ActivityThread.main(ActivityThread.java:5419)
01-12 17:18:24.970: E/AndroidRuntime(19258): 	at java.lang.reflect.Method.invokeNative(Native Method)
01-12 17:18:24.970: E/AndroidRuntime(19258): 	at java.lang.reflect.Method.invoke(Method.java:525)
01-12 17:18:24.970: E/AndroidRuntime(19258): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
01-12 17:18:24.970: E/AndroidRuntime(19258): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
01-12 17:18:24.970: E/AndroidRuntime(19258): 	at dalvik.system.NativeStart.main(Native Method)
01-12 17:18:24.970: E/AndroidRuntime(19258): Caused by: java.lang.NullPointerException
01-12 17:18:24.970: E/AndroidRuntime(19258): 	at mitch.test.ledrgb.RGBActivity.isReachable(RGBActivity.java:162)
01-12 17:18:24.970: E/AndroidRuntime(19258): 	at mitch.test.ledrgb.RGBActivity.Ping(RGBActivity.java:136)
01-12 17:18:24.970: E/AndroidRuntime(19258): 	at mitch.test.ledrgb.RGBActivity.onCreate(RGBActivity.java:89)
01-12 17:18:24.970: E/AndroidRuntime(19258): 	at android.app.Activity.performCreate(Activity.java:5372)
01-12 17:18:24.970: E/AndroidRuntime(19258): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
01-12 17:18:24.970: E/AndroidRuntime(19258): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2257)
01-12 17:18:24.970: E/AndroidRuntime(19258): 	... 11 more


Es liegt ja wohl an dem isReachable()

hier mein Codeausschnitt

Code:
public boolean Ping(){

	  if (isReachable()) return true;
	  if (!isReachable())
	  	{
		  	Log.d("Udp tutorial","ANReach2");
		  	AlertDialog.Builder alert2 = new AlertDialog.Builder(this);//alert ausgeben show nicht vergessen;)
			alert2.setTitle("Fehler");// überschrift des buttons
			alert2.setMessage("Falsche IP");//Text des Buttons
			alert2.setPositiveButton("Schließen", new DialogInterface.OnClickListener() {
		         public void onClick(DialogInterface dialog, int id) {
		        	 Einstellungen();
		         }
			});
		         
			alert2.show();//zeigt alert an
			//return false;
	  	}
	return false;
		  
  }
  
private boolean isReachable() {
      try {
          Process exec = Runtime.getRuntime().exec("ping -c 1 " + ipInt);
          BufferedReader reader = new BufferedReader(new InputStreamReader(exec.getInputStream()));
          reader.readLine();//PING...bytes of data.
          
          String line1 = reader.readLine().trim();
          exec.destroy();
          return line1.endsWith("ms");
      } catch (IOException e) {
          e.printStackTrace();
      }
      return false;
  }

kann mir vielleicht jemanden sagen wodran es liegt? vor dem Update lief es ja...

vielleicht gibt es noch eine andere möglichkeit zu schauen ob eine IP Adresse verfügbar ist?

Der ursprüngliche Beitrag von 17:24 Uhr wurde um 17:37 Uhr ergänzt:

erledigt!!! :)
hab das leerzeichen nach der "1" bei "ping -c 1 " + ipInt weggemacht und nun läuft es

Der ursprüngliche Beitrag von 17:37 Uhr wurde um 18:09 Uhr ergänzt:

geht doch nicht ...
stürzt zwar nicht mehr ab... macht aber auch kein ping mehr... zeigt nun immer an dass der nichts pingen kann....

wodran kann es liegen?
 
Keine Ahnung, wo der Fehler liegt. Ich hab aber dennoch einen (eigentlich 2) Vorschläge für Dich.

Statt deiner eigenen isReachable() könntest Du einfach auch die bereits in Android vorhandene nutzen. Die sollte ja eigentlich funktionieren (hab ich aber nicht getestet.)

Unter der Annahme, dass "ipInt" ein String ist:

Code:
try {
      InetAddress address = InetAddress.getByName(ipInt);
      // time in ms until giving up
      if(address.isReachable(5000)) {
         return true;
      } else {
          // do alert stuff
      }
} catch (UnknownHostException e) {
  e.printStackTrace();
} catch (IOException e) {
  e.printStackTrace();
}
Der 2. Vorschlag is hier schon eingebaut, ich hab dein zweites if durch ein else ersetzt. Nun wird nur noch 1x versucht zu pingen, statt 2x. ;)
 
danke dir erstmal

aber das mit dem isReachable von Android funktioniert leider nicht soviel ich mich erinnere, das hab ich nämlich schon damals als ich die app geschrieben habe probiert.

Der ursprüngliche Beitrag von 20:11 Uhr wurde um 20:46 Uhr ergänzt:

nochmal ausprobiert... funktioniert schon...
allerdings muss ich das über Asynctask machen und bekomme dann meine true bzw. false nicht zurück:(
 
Das solltest du sowieso über ein AsyncTask machen.

Dein Problem könnte evtl sein, dass der Ping einfach zu lange braucht und dein Programm zu schnell ist.
Sagen wir der Ping braucht 500ms, warum auch immer, bis dahin hat dein Programm längst readLine ausgeführt und den Process destroyed.
Dann bekommst du auch nur false zurück.

Wenn überhaupt müsstest du mit
exec.waitFor() warten bis der Prozess zu ende ist.

Aber das kann im Extremfall dazu führen, dass dein Programm mehrere Sekunden nicht reagiert (Ich weiß gerade nicht wie lang die stadard wartezeit auf eine Antwort vom Ping command ist.)

Also nutze lieber das "eingebaute" isReachable
Und erledige in der OnPostExecution Methode den Kram, den du momentan bei !isReachable() machst.
Das sollte eigentlich funktionieren.
 
Hallo nochmal
habe das nun folgedermassen gelöst

Code:
public void Connect(){
	try {
		InetAddress serverAddr = InetAddress.getByName(ipInt); //die IP vom editttext wird in einer Internetadresse umgewandelt
		if(serverAddr.isReachable(5000)) {
	    	  Log.d("Udp tutorial","joooo");
	      } else {
	    	  Log.d("Udp tutorial","neeee");
	    	  Log.d("Udp tutorial","Alert()");
	    	  	AlertDialog.Builder alert2 = new AlertDialog.Builder(RGBActivity.this);//alert ausgeben show nicht vergessen;)
	    		alert2.setTitle("Fehler");// überschrift des buttons
	    		alert2.setMessage("Falsche IP");//Text des Buttons
	    		alert2.setPositiveButton("Schließen", new DialogInterface.OnClickListener() {
	    	         public void onClick(DialogInterface dialog, int id) {
	    	        	 Einstellungen();
	    	         }
	    		});
	    	         
	    		alert2.show();
	    	  return;
	          // do alert stuff
	      }
		ByteLength = SendByte.length;
		Log.d("Udp sende","REC" + SendByte);
		DatagramSocket socket = new DatagramSocket();
		DatagramPacket packet = new DatagramPacket(SendByte, ByteLength, serverAddr, Port);
		socket.send(packet);
		}
	
	
	catch (Exception e) 
	{
	}
	return;
}

Die Log's kommen wenn der den Server nicht erreicht... allerings poppt mein alert nicht auf... sieht da jemand auf die schnelle meinen fehler?
 
Bist du noch im UI Thread? dürftest du eigentlich nicht sein und nur im UI Thread kannst du auch UI Elemente aufrufen.

Aber eigentlich müsste er da nen Fehler werfen meine ich.
 

Ähnliche Themen

G
Antworten
0
Aufrufe
132
Gerdchen07
G
G
Antworten
1
Aufrufe
384
Gerdchen07
G
G
Antworten
13
Aufrufe
598
Gerdchen07
G
L
Antworten
2
Aufrufe
554
Lexub
L
migi01
Antworten
26
Aufrufe
1.990
migi01
migi01
Zurück
Oben Unten