Beiträge von Aviciii

    Hi,


    ich habe im Internet zahlreiches Material zum Thema Kommunikation zwischen zwei Threads (Möglichkeit über die sogenannte Pipe) gefunden.
    In meiner App ist es jedoch wichtig, dass der Thread mit dem main-Thread kommunizieren kann. Genauer gesagt muss an einer Stelle, die Verbindung zu einem Server getestet werden(muss man ja in einem extra Thread machen), je nachdem soll auf der Oberfläche eine Meldung von Erfolg/Misserfolg ausgegeben werden. Mit der Oberfläche (muss ja zwingend im Main Thread verändern bei setContentView()?) möchte ich dann eine Meldung ausgeben, dass man z.B. die Eingabe der Serveradresse bitte nochmal korrigieren möchte.


    Nochmal: Das Problem ist, dass ich es nicht schaffe den im Thread ermitteltem Zustand(Verbindung erfolgreich/nicht erfolgreich hergestellt) auf den Main-Thread zu übertragen, wo die entsprechende Aktion in der Oberfläche (...setText(), setContentView(...)) ausgeführt wird.


    Kann mir da bitte jemand Erfahreneres weiterhelfen?


    Würde mich sehr freuen.


    Gruß Marcel

    Hi, ich entwickle gerade eine App, mit der man später Daten auf einen FTP Server hochladen und wieder downloaden können soll.
    Der Programmcode funktioniert als Programm aufm PC fabelhaft, aber wenn ich ihn in meiner App ausführe, stürzt diese ab, sobald ich versuche eine Verbindung mit dem Server herzustellen. Habe das Library von Apache: Commons Net 3.3 integriert.
    Grundsätzlich funktionieren andere Methoden der eingebundenen Klassen von Apache, nur kommt es sofort zum Absturz auf meinem Handy wenn ich die App über den Developer Mode im Android Studio 1.1 ausführe und der Programmcode an der Stelle


    "ftpClient.connect(InetAddress.getByName(server));" steht. >>App wurde leider beendet"<< steht dann aufm Handy.
    Ich habe übrigens ein Huawei Ascend G525, Android 4.1.


    Ich habe sehr lange im Internet geschaut, bin aber nicht fündig geworden, wo der Fehler liegt. Sollte denke ich auch nicht im Programmcode liegen.


    Ich würde mich sehr über hilfreiche Antworten freuen, die mich bei der Problemlösung weiterbringen. Danke :)



    Mein Programmcode:



    package com.example.marcel.innvite_v1;



    import android.support.v7.app.ActionBarActivity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;



    import org.apache.commons.net.ftp.FTP;
    import org.apache.commons.net.ftp.FTPClient;



    import java.io.*;
    import java.net.InetAddress;




    public class MainActivity extends ActionBarActivity {



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

    String server = "aviciii.bplaced.net";
    int port = 21;
    String user = ""; //Spielt hier noch keine Rolle, es ist erst einmal wichtig, dass eine Verbindung zum Server möglich ist.
    String pass = "";



    FTPClient ftpClient = new FTPClient();
    try {



    ftpClient.connect(InetAddress.getByName(server)); //Hier stürzt die App ab
    ftpClient.login(user, pass);
    ftpClient.enterLocalPassiveMode(); //Andere Methoden, wie diese funktionieren
    ftpClient.setFileType(FTP.BINARY_FILE_TYPE);



    String remoteFile1 = "/test/testdoc.txt";
    File downloadFile1 = new File("/storage/sdcard0/testdoc.txt");
    OutputStream outputStream1 = new BufferedOutputStream(new FileOutputStream(downloadFile1));
    boolean success = ftpClient.retrieveFile(remoteFile1, outputStream1);
    outputStream1.close();



    if (success) {
    System.out.println("File #1 has been downloaded successfully.");
    }




    } catch (IOException ex) {
    System.out.println("Error: " + ex.getMessage());
    ex.printStackTrace();
    }


    finally {
    try {
    if (ftpClient.isConnected()) {
    ftpClient.logout();
    ftpClient.disconnect();
    }


    } catch (IOException ex) {
    ex.printStackTrace();



    }
    }


    }


    // AB HIER DER CODE, DER SCHON STANDARDMÄßIG IM NEUEN PROJEKT VORHANDEN IST



    public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
    }



    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();



    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
    return true;
    }



    return super.onOptionsItemSelected(item);
    }
    }