Hilfe! Warum funktioniert meine simple App nicht?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 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:
    developer.android.com/reference/android/os/AsyncTask.html

    Viel Erfolg
    Falls du nach Feierabend noch manchmal etwas sinnvolles anschauen willst:

    Zum YouTube Kanal :P
    -> Mobile Themen
    -> Android Programmierung
    -> Virtual Reality (VR)
  • Ich mache alles was irgendwie mit http(s) zu tun hat mit Volley. Die Bibliothek ist so einfach und komfortabel. Ich kann es mir ein Leben ohne Volley fast nicht mehr vorstellen. :)