Hilfe! Warum funktioniert meine simple App nicht?

  • Hi Leute,


    Bin neu auf diesem Gebiet und habe gerade meine erste App geschrieben, welche nicht funktioniert.
    Anbei der Code (bitte die ganzen überflüssigen Imports ignorieren).
    Das Layout habe ich nicht geändert, also sollte eigentlich die "Hello world" - Anzeige erscheinen, während das Programm abläuft.
    Auf jeden Fall bekomme ich die Meldung "Filetclient reagiert nicht", wenn ich die App auf mein phone draufspiele. Gradle gibt 0 Fehler und 0 Warnungen raus. Auf dem Server kommt auch kein Verbindungsaufbau an. Mein Phone ist mit dem Server 100%ig verbunden. Das kann ich einfach mit anderen Apps testen.
    Hat jemand eine Ahnung, woran das liegen könnte? Danke!
    package com.example.blabla.filetclient;
    import android.os.Environment;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import java.io.BufferedOutputStream;
    import java.io.IOException;
    import java.io.BufferedInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io_OutputStream;
    import java.net.Socket;
    import java.net.InetAddress;
    import java.net.NetworkInterface;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.net.SocketException;
    import java.util.Enumeration;
    import android.support.v7.app.ActionBarActivity;
    import android.os.Bundle;
    import android.os.Environment;
    import android.widget.TextView;
    import android.widget.Toast;
    public class MainActivity extends AppCompatActivity {
    Socket socket;
    @override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // android.os.Debug.waitForDebugger();
    try {
    this.socket = new Socket("192.168.178.32", 80);
    } catch (IOException e) {
    e.printStackTrace();
    }
    File file = new File(Environment.getExternalStorageDirectory(),
    "picture.jpg");
    byte[] bytes = new byte[(int) file.length()];
    try {
    BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
    BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
    bis.read(bytes, 0, bytes.length);
    bos.write(bytes, 0, bytes.length);
    bos.flush();
    socket.close();
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }

  • ich würde mal vermuten, dass du hier einen long-running task auf dem UI Thread machst. Du blockierst also die App bis die Verbindung aufgebaut ist. Nach wenigen (Milli?) Sekunden wird Android eine ANR (App not responding) schmeißen.


    Du solltest mal einen Blick auf AsyncTask werfen:
    https://developer.android.com/…android/os/AsyncTask.html


    Viel Erfolg

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!