Android Programm stürzt ab - Es geht um Netzwerk

Pommes9485

Bekanntes Mitglied
Hallo,

ich wollte meinen Netzwerk Chat jetzt auch noch auf Android ausweiten.

Dafür habe ich erstmal eine sehr einfache Form gemacht, inder das Handy einfach nur eine Verbindung herstellt und dann eine Nachricht ausgibt, welche vom Server geschickt wurde.

Aber die APP schließt sich und ich weis nicht wieso.
Hier der Code der Android APP:

Java:
package com.example.helloandroid;



import android.app.Activity;

import android.os.Bundle;
import android.view.View;

import android.widget.*;
public class HelloWorldActivity extends Activity {
    /** Called when the activity is first created. 
     * 
     * @return */
verbinden cl;
	
    @Override
    public void  onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
      Button mButton = (Button) findViewById(R.id.button1);
      final EditText tv = (EditText) findViewById(R.id.editText1);
     
     
      mButton.setOnClickListener(new View.OnClickListener() {

          public void onClick(final View pView) {
            cl = new verbinden(String.valueOf(tv.getText()));
            cl.run();
           }});  
    }
}

und verbinden :

Java:
package com.example.helloandroid;

import java.net.*;
import java.util.Scanner;
import java.io.*;

import android.app.Activity;
import android.widget.EditText;

public class verbinden extends Activity{
Socket server;
Scanner in;
String nachricht="";
String ipp;
final EditText tv2 = (EditText) findViewById(R.id.editText2);

public boolean verbindung = false;
public verbinden(String ip)
{ipp=ip;}
public void run() {
	try{
server = new Socket(ipp,550);
verbindung = true;

}
catch(IOException i){i.printStackTrace();}
try{
	 in = new Scanner(server.getInputStream());
	}
	catch(IOException i){i.printStackTrace();}
	for(int i=0;i<1000;i++)
	     {


	               nachricht = in.nextLine();
	             if(!nachricht.equals(""))
	              {
	               tv2.setText(nachricht);
	            	   i=0;
	              }
	       }

}
}

Ich habe bei verbinden auch die Schleife schon rausgenommen, da diese auch bei JavaME schonmal Probleme machte, allerdings bringt das nichts.

Was ist da los `?

Mfg Marvin
 

schlingel

Gesperrter Benutzer
Warum leitet deine Klasse verbinden von Activity ab? Macht überhaupt keinen Sinn da man eine Activity über einen Intent verwendet. Außerdem ist eine Activity so etwas in der Art wie ein Fenster.

Du benötigst hier doch gar kein Fenster.

Außerdem: Was spuckt den der logcat aus? Wenn du mit Eclipse entwickelst kannst du dir die Logcat-View aufdrehen und dann siehst du was schief läuft.

Die Chancen stehen nämlich gut dass du:
- Nicht die nötigen Permissions für's Netzwerk im AndroidManifest.xml eingetragen hast.
- Deine merkwürdige Activity-Anwendung dem Framework nicht passt.

Falls du die verbinden-Activity als Warte-Fenster verwenden möchtest, nimm lieber einen Dialog und mach das Verbinden in einem AsyncTask. Der Netzwerkcode scheint aber auf den ersten Blick richtig zu sein.

Edit:/
- Naming-Guidelines durchlesen bitte ;-) Eine Klasse sollte nie nach einem Verb benannt sein und das hat seinen Grund.
 

Pommes9485

Bekanntes Mitglied
Ich habe es deswegen von Activity erben lassen, damit die Klasse mit dem editText klarkommt.

Wie genau trage ich denn die Rechte in die Datei ein ?
Habe sie zwar schon gefunden, aber bei Android Developers stehen nur die Rechte, nicht aber wie ich sie eintrage ...

/EDIT :
Nachdem ich gemerkt habe, wie blöd es ist, deswegen einfach von Activity zu erben, habe ich die beiden Klassen so umgeschrieben, das die erste von Activity erbt und die zweite vom Thread.
Laut Compiler läuft das alles auch, aber in der Praxis immer noch nicht. Ich bemühe mich mal um dieses Log Programm.
//EDIT2:
Ich habe mir das LogCat fenster anzeigen lassen und mittels diesem Code:
Log.d("onClick", "cl gestartet");
Sollte auch was in diesem Fenster angezeigt werden. Wird es aber nicht.

Was da los :D
 
Zuletzt bearbeitet:

schlingel

Gesperrter Benutzer

Pommes9485

Bekanntes Mitglied
Ich habe jetzt den Task eingefügt, es sieht jetzt insgesamt so aus :

Java:
package com.example.helloandroid;



import android.app.Activity;

import android.os.Bundle;
import android.view.View;
import android.util.Log;

import android.widget.*;
public class HelloWorldActivity extends Activity {
    /** Called when the activity is first created. 
     * 
     * @return */
verbinden cl;
boolean fertig = true;
	
    @Override
    public void  onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
      Button mButton = (Button) findViewById(R.id.button1);
      final EditText tv = (EditText) findViewById(R.id.editText1);
      final EditText tv2 = (EditText) findViewById(R.id.editText2);
     
      mButton.setOnClickListener(new View.OnClickListener() {

          public void onClick(final View pView){
        	
        	  while(true){
        	 
        		  new verbinden(String.valueOf(tv.getText()), tv2).execute();
        	 
        	  
        	  }
            
           
            
           }});  
    }
}

Und verbinden:

Java:
package com.example.helloandroid;

import java.net.*;
import java.util.Scanner;
import java.io.*;


import android.widget.EditText;
import android.os.AsyncTask;
import android.util.Log;

public class verbinden extends AsyncTask<Void, Void, Void>{
Socket server;
Scanner in;
String nachricht="";
String ipp;
EditText ed;



public boolean verbindung = false;
public verbinden(String ip, EditText edit)
{ipp=ip;ed = edit;}
public void run() {
	

}
protected Void doInBackground(Void... params) {
	try{
		server = new Socket(ipp,550);
		verbindung = true;
		System.out.println("Verbindung hergestellt");
		}
		catch(IOException i){i.printStackTrace();Log.e("verbinden", i.getMessage());}
		try{
			 in = new Scanner(server.getInputStream());
			}
			catch(IOException i){i.printStackTrace();Log.e("Scannen", i.getMessage());;}
			


			               nachricht = in.nextLine();
			            
			       
			return null;
	
}
protected void onPostExecute() {
    if(!nachricht.equals("")){
    	ed.setText(nachricht);
    	
    }
}
}

Ich bekomme auch keine Meldung nach aussen, dann könnte ich wenigstens das Feststellen.

Angeblich soll System.out ja mit LogCat gehen, aber da steht nichts...

EDIT :

LogCat läuft nachdem ich Eclipse neugestartet habe und anhand der Meldung ist mit klar geworden, dass der Emulator kein WiFi unterstützt. Daher muss jetzt mein Handy ran, aber das hat ja kein LogCat...

Gibts da irgendein Möglichkeit ?
 
Zuletzt bearbeitet:

schlingel

Gesperrter Benutzer
Hallo,

dein Handy hat Logcat. Probier es einfach aus. Du musst nur Debugging einschalten und den Rest sollte Eclipse von alleine erledigen. Womöglich fragt Eclipse zuvor noch einmal per Auswahldialog nach ob du deinen Emulator oder dein Telefon verwenden möchtest wenn du die App startest aber das war es schon.

Übrigens hab ich dir ein kleines Beispiel geschrieben bei dem du dir anschauen kannst wie du das mit nem AsyncTask samt Wartedialog machst.

Ich hab dir zwei Eclipse-Testprojekte angehängt. Vielleicht kannst du das ja noch brauchen.
 

Anhänge

  • MrSadGuyAndroidClient.zip
    51 KB · Aufrufe: 4
  • SimpleSocketServer.zip
    7,3 KB · Aufrufe: 2
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Fertiges Programm auf dem Telephon zum Laufen bringen - wie? Android & Cross-Platform Mobile Apps 13
V Kennt jemand ein Programm , um .DEX Dateien zu öffnen, bearbeiten und wieder speichern? Android & Cross-Platform Mobile Apps 2
T Android Programm zu Android-App Android & Cross-Platform Mobile Apps 4
B Wo lege ich im Programm texdteien oder ini's ab Android & Cross-Platform Mobile Apps 16
J Programm zum prüfen auf AppUpdates Android & Cross-Platform Mobile Apps 7
Y Erstes kleines Android Programm will nicht so recht... Android & Cross-Platform Mobile Apps 1
F Android USB Verbindung zu Windows Programm Android & Cross-Platform Mobile Apps 3
X Android Befehle an einem PC-Programm schicken Android & Cross-Platform Mobile Apps 4
M Android Android Programm mehr Speicher zuweisen Android & Cross-Platform Mobile Apps 4
S Android Programm pausieren lassen Android & Cross-Platform Mobile Apps 2
M Frage zu Java Programm für Windows Mobile 6.5 Android & Cross-Platform Mobile Apps 2
S Programm, daß auf eingehende Anrufe reagiert Android & Cross-Platform Mobile Apps 3
E Fertiges Programm auf Smartphone zum laufen bringen. Android & Cross-Platform Mobile Apps 2
B Programm aus einem Buch funzt nicht! Android & Cross-Platform Mobile Apps 16
C Programm nicht auf Handy installierbar (Zertifikatfehler) Android & Cross-Platform Mobile Apps 3
R Programm mit Elementen aus High-Level API und Low-Level API Android & Cross-Platform Mobile Apps 11
D J2ME - Wie und welches Programm Android & Cross-Platform Mobile Apps 10
U Programm um die Klassen darzustellen Android & Cross-Platform Mobile Apps 4
S Idee gesucht für ein kleines Programm Android & Cross-Platform Mobile Apps 3
A Java Programm auf Handy? Android & Cross-Platform Mobile Apps 2
luke86 Programm von Handy zu Handy weitergeben(NOKIA N70) Android & Cross-Platform Mobile Apps 3
D Bluetooth Pairing dem Programm ueberlassen? Android & Cross-Platform Mobile Apps 3
J J2ME Java Programm im Hintergrund auf Handy laufen lassen? Android & Cross-Platform Mobile Apps 2
G Programm auf handy installieren Android & Cross-Platform Mobile Apps 3
B Programm für NokiaComunicator erstellen Android & Cross-Platform Mobile Apps 2
D c programm als java application aufs nokia 6230 Android & Cross-Platform Mobile Apps 2
W App stürzt bei 2. Foto ab Android & Cross-Platform Mobile Apps 3
K App stürzt ab Android & Cross-Platform Mobile Apps 29
I Android Auf ImageView aus einem anderen Thread zugreifen liefert Fehlermeldung (App stürzt ab) Android & Cross-Platform Mobile Apps 5
O Google Admob Ad wird nicht geladen und App stürzt ab Android & Cross-Platform Mobile Apps 1
L App stürzt ab. Android & Cross-Platform Mobile Apps 2
T Android Eigene App stürzt ab Android & Cross-Platform Mobile Apps 3
J Android App stürzt ab wenn neue activity gestartet Android & Cross-Platform Mobile Apps 6
B Android GameLoopThread stürzt beim 2ten start der App ab? Android & Cross-Platform Mobile Apps 4
W getSystemService(SENSOR_SERVICE) - App stürzt ab Android & Cross-Platform Mobile Apps 5
E Android App stürzt nach Modifizierung ab Android & Cross-Platform Mobile Apps 2
J MIDlet installieren - Telefon stürzt ab! Android & Cross-Platform Mobile Apps 3
W Android Wieso geht getApplicationContext() bei Toast, aber nicht bei AlertDialog.Builder? Android & Cross-Platform Mobile Apps 36
K Log.v geht nicht Android & Cross-Platform Mobile Apps 4
J R.string.(variable) geht das Android & Cross-Platform Mobile Apps 3
B Timer geht nicht Android & Cross-Platform Mobile Apps 2
L Android Apache POI: Datei speichern geht nicht Android & Cross-Platform Mobile Apps 1
T Button geht net... Android & Cross-Platform Mobile Apps 2
D Hilfe! es geht um Buttons und Sounds Android & Cross-Platform Mobile Apps 14
S Android LogCat Ausgaben in Schleife geht nicht? Android & Cross-Platform Mobile Apps 2
K Android Alarm Manager (Wakelock? ) geht nicht Android & Cross-Platform Mobile Apps 4
N Android Hilfe string to float geht nicht... Android & Cross-Platform Mobile Apps 4
D wie geht Klassenvererbung von Canvas Klassen Android & Cross-Platform Mobile Apps 2
R Meine arctan-Methode geht nicht Android & Cross-Platform Mobile Apps 6
X Anfängerfrage : Form und CommandListener - Warum geht das nicht? Android & Cross-Platform Mobile Apps 5

Ähnliche Java Themen

Neue Themen


Oben