• Wir präsentieren Dir heute ein Stellenangebot für einen Java Entwickler - m/w/d in Augsburg, München, Stuttgart oder Bamberg. Hier geht es zur Jobanzeige

Android FTP Upload über Android

Florum

Florum

Mitglied
Erstmal frohe Weihanchten;).
Ich bräuchte da mal eure Hilfe:

Ich möchte mithilfe der http://enterprisedt.com/products/edtftpj/ Library einen Datei auf einen FTP Server von meinem Android Smartphone aus hochladen.
Jedoch stürzt die App immer ab wenn man (siehe Code) auf den Button drückt.

Hier ist der Code:
Java:
package com.florian.ftpupload;

import java.io.IOException;

import com.enterprisedt.net.ftp.FTPException;
import com.enterprisedt.net.ftp.FileTransferClient;

import android.app.Activity;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;

public class UploadActivity extends Activity implements OnClickListener {
   
    public Button btn;
    private String host = "*Entfernt*";
    private int port = 21;
    private String benutzername = "*Entfernt*";
    private String passwort = "*Entfernt*";
    private int nutzeripint;
    private String nutzeripstring;
    private String datei = "\\sdcard\\Download";
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_florian);
        btn = (Button) findViewById(R.id.button);
       
        btn.setOnClickListener(this);       
    }
   
    @Override
    public void onClick(View v) {
        switch (v.getId()){
       
        case R.id.button:{
           
            FileTransferClient ftp = new FileTransferClient();
            try {
                ftp.setRemoteHost(host);
                ftp.setUserName(benutzername);
                ftp.setPassword(passwort);
                try {
                    try {
                        ftp.connect();
                    } catch (IOException e) {

                    }
                    WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
                    nutzeripint = wm.getConnectionInfo().getIpAddress();
                    nutzeripstring = Integer.toString(nutzeripint);
                    String uploaddatei = "IP: " + nutzeripstring + " Datei";
                    try{
                        try {
                            ftp.uploadFile(datei, uploaddatei);
                        } catch (IOException e) {

                        }
                    } finally {
                        try {
                            ftp.disconnect();
                        } catch (IOException e) {

                        }
                    }   
                } catch (FTPException e) {

                }
            } catch (FTPException e) {

            }
           
           
           
        }
        }
    }
}

Ich hoffe ihr versteht mein Probelm.

MfG
Flo
 
InfectedBytes

InfectedBytes

Top Contributor
du hast ewig viele geschachtelte try-catch Blöcke. Viele davon machen erstmal keinen Sinn, bzw. bringen keinen mehr Wert:
Java:
try {
  try {
    ...
  } catch(IOException e) {
    ...
  }
} finally {

}
geht auch viel kürzer:
Java:
try {
    ...
} catch(IOException e) {
    ...
} finally {

}

Und ansonsten solltest du nicht einfach nur die Exceptions abfangen und einfach weiterlaufen, sondern eben den Fehler auch sinnvoll behandeln.
Notfalls gib den Stacktrace aus, damit man überhaupt nachvollziehen kann, was schief gelaufen sein könnte.
 
Tobse

Tobse

Top Contributor
ADB = Android Debugging Bridge. Wenn auf deinem Telefon die Einstellung "USB Debugging erlauben" angeschaltet ist, kann man damit auf dem Handy Befehle in der Unix-Shell ausführen, Dateien zum Handy übertragen und die Logs, die von den Apps und von Android produziert werden auf den PC übertragen. In diesen Logs sind auch die Stacktraces drin, welche die Android JVM erzeugt.

Wenn deine App eine Exception bis zu Android durchlässt erscheint dieses Fenster "App XXX musste beendet werden". Wenn du die ADB benutzt kannst du dir dann den Stacktrace anschauen.

Je nachdem, welche IDE du benutzt, ist das mehr oder weniger einfach. Ich habe bisher nur mit dem neuen Android-Studio (bzw. IntelliJ IDEA) für Android entwickelt - dort werden dir die Logs direkt in der IDE gezeigt. Wie das mit Eclipse und dem Android-Plugin läuft, weiss ich nicht.

Ich vermute aber mal folgendes: in Android darf man keine Netzwerkaktivitäten im Haupt-Thread und im UI-Thread ausführen. Das verursacht dann eine SecurityException mit einer Message álá "Networking on Main Thread". Versuch den ganzen FTP kram mal in einen neuen Thread zu schieben.
 
Florum

Florum

Mitglied
@Tobse Ich mal so ein bisschen gegoogelt und leider nichts richtig verwendbares gefunden. Könntest du mir da helfen bezüglich des Threads?
 
Florum

Florum

Mitglied
Hab den Code überarbeitet:
-Verwendet Library: https://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net/ftp/FTP.html
-Thread enthalten
Java:
package com.florian.ftpupload;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.SocketException;

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

import com.florian.ftpupload.R;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

public class UploadActivity extends Activity{

    public static final String TAG = "Contacts";
  
    public String host = "<serverip>";
    public String benutzername = "<username>";
    public String passwort = "<password>";
    public String database = "test.txt";
    public int nutzeripint;
    public String nutzeripstring;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_upload);
      
      
        Thread t = new Thread(new Runnable(){
            @Override
            public void run(){
                try {
                    DatabaseUpload();
                } catch (SocketException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
        t.start();
        Log.i(TAG, "thread started");

  
    }

    protected void DatabaseUpload() throws SocketException, IOException {
        FTPClient ftp = new FTPClient();
          ftp.connect(host);
          int reply = ftp.getReplyCode();
         
          if (!FTPReply.isPositiveCompletion(reply)){
            Toast.makeText(getApplicationContext(), "FTP server refused connection.", Toast.LENGTH_SHORT).show();
          }
    
          ftp.login(benutzername, passwort);
          ftp.setFileType(FTP.BINARY_FILE_TYPE);
          ftp.enterLocalPassiveMode();
        
          InputStream fis = new FileInputStream(database);
          ftp.storeFile("bitte.txt", fis);
          fis.close();
         
          ftp.logout();
          ftp.disconnect();
  
    }
}



und bekomme diese Fehlermeldung in LogCat
Code:
D/Genymotion(   56): Received Ping
I/ActivityManager(  366): START u0 {act=android.intent.action.MAIN cat=[android.
intent.category.LAUNCHER] flg=0x10200000 cmp=com.florian.ftpupload/.UploadActivi
ty} from pid 586
D/dalvikvm(  366): GC_CONCURRENT freed 805K, 16% free 7450K/8816K, paused 1ms+2m
s, total 20ms
I/ActivityManager(  366): Start proc com.florian.ftpupload for activity com.flor
ian.ftpupload/.UploadActivity: pid=1421 uid=10051 gids={50051, 1028}
I/qtaguid (  366): Failed write_ctrl(s 1 10051) res=-1 errno=1
W/NetworkManagementSocketTagger(  366): setKernelCountSet(10051, 1) failed with
errno -1
E/dalvikvm( 1421): Could not find class 'org.apache.commons.net.ftp.FTPClient',
referenced from method com.florian.ftpupload.UploadActivity.DatabaseUpload
W/dalvikvm( 1421): VFY: unable to resolve new-instance 1557 (Lorg/apache/commons
/net/ftp/FTPClient;) in Lcom/florian/ftpupload/UploadActivity;
D/dalvikvm( 1421): VFY: replacing opcode 0x22 at 0x0000
D/dalvikvm( 1421): DexOpt: unable to opt direct call 0x2a97 at 0x02 in Lcom/flor
ian/ftpupload/UploadActivity;.DatabaseUpload
I/Contacts( 1421): thread started
W/dalvikvm( 1421): threadid=10: thread exiting with uncaught exception (group=0x
a614c908)
E/AndroidRuntime( 1421): FATAL EXCEPTION: Thread-122
E/AndroidRuntime( 1421): java.lang.NoClassDefFoundError: org.apache.commons.net.
ftp.FTPClient
E/AndroidRuntime( 1421):        at com.florian.ftpupload.UploadActivity.Database
Upload(UploadActivity.java:55)
E/AndroidRuntime( 1421):        at com.florian.ftpupload.UploadActivity$1.run(Up
loadActivity.java:40)
E/AndroidRuntime( 1421):        at java.lang.Thread.run(Thread.java:856)
W/ActivityManager(  366):   Force finishing activity com.florian.ftpupload/.Uplo
adActivity
D/libEGL  ( 1421): loaded /system/lib/egl/libEGL_genymotion.so
D/        ( 1421): HostConnection::get() New Host Connection established 0xb7b1a
f98, tid 1421
D/libEGL  ( 1421): loaded /system/lib/egl/libGLESv1_CM_genymotion.so
D/libEGL  ( 1421): loaded /system/lib/egl/libGLESv2_genymotion.so
I/ActivityManager(  366): START u0 {act=android.intent.action.MAIN cat=[android.
intent.category.LAUNCHER] flg=0x10200000 cmp=com.florian.ftpupload/.UploadActivi
ty} from pid 586
W/EGL_genymotion( 1421): eglSurfaceAttrib not implemented
D/OpenGLRenderer( 1421): Enabling debug mode 0
I/Contacts( 1421): thread started
W/dalvikvm( 1421): threadid=11: thread exiting with uncaught exception (group=0x
a614c908)
I/Process ( 1421): Sending signal. PID: 1421 SIG: 9
I/qtaguid (  366): Failed write_ctrl(s 0 10051) res=-1 errno=1
W/NetworkManagementSocketTagger(  366): setKernelCountSet(10051, 0) failed with
errno -1
I/ActivityManager(  366): Process com.florian.ftpupload (pid 1421) has died.
I/WindowState(  366): WIN DEATH: Window{533f06e4 u0 com.florian.ftpupload/com.fl
orian.ftpupload.UploadActivity}
W/ActivityManager(  366): Force removing ActivityRecord{5348c488 u0 com.florian.
ftpupload/.UploadActivity}: app died, no saved state
I/WindowState(  366): WIN DEATH: Window{5343b134 u0 com.florian.ftpupload/com.fl
orian.ftpupload.UploadActivity}
W/EGL_genymotion(  586): eglSurfaceAttrib not implemented
W/InputMethodManagerService(  366): Window already focused, ignoring focus gain
of: com.android.internal.view.IInputMethodClient$Stub$Proxy@53330148 attribute=n
ull, token = android.os.BinderProxy@533c6a54
D/Genymotion(   56): Received Ping
 
Tobse

Tobse

Top Contributor
Perfekt, genau das meinte ich :) Da siehst du jetzt alle Infos die du brauchst. Momentan sieht es so aus (Could not find class 'org.apache.commons.net.ftp.FTPClient'), als ob die Apache Library nicht richtig eingebunden ist.
wenn du mit dem Android Studio / IntelliJ arbeitest, musst du genau drauf achten, wie du die JAR da einbidest (da gibts mehr als 3 wege, alle haben ihren Sinn; aber nicht bei allen landen die JARs dann in der APK).
 
Florum

Florum

Mitglied
@Tobse Danke, dir auch. Weißt du vielleicht wie ich einen Pfad für Java+Android angeben muss?
Mit "/" oder "//" oder ganz anders?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Android Anklickbare Region über RadioButton zentrieren Android & Cross-Platform Mobile Apps 1
B Android TCP-Verbindung zum Server über welche Prozess auslagerung nutzen? Android & Cross-Platform Mobile Apps 1
S Android Absoluter Neuling: EditText zur Laufzeit verändern bzw. über Button Android & Cross-Platform Mobile Apps 2
V Bytes (Wertebereich 0-255) über BLE empfangen,lesen und speichern Android & Cross-Platform Mobile Apps 1
L Android SQLite mit HSQLDB über Android synchronisieren Android & Cross-Platform Mobile Apps 13
T Musik über Bluetooth streamen Android & Cross-Platform Mobile Apps 2
B Android Mehrer Hexwerte über outputstream senden, und empfangen (Bluetoth) Android & Cross-Platform Mobile Apps 9
R W-Lan Problem über Sockets Android & Cross-Platform Mobile Apps 1
R Android App mit ausgeschaltetem Display über Volume-Tasten steuern Android & Cross-Platform Mobile Apps 0
A Android Login über Serveranbindung Android & Cross-Platform Mobile Apps 3
B Datei downloaden über DialogBox? Android & Cross-Platform Mobile Apps 4
T Android Druckauftrag über Mobiles Internet Android & Cross-Platform Mobile Apps 2
L Android Android über Java Code connecten? Android & Cross-Platform Mobile Apps 2
N Java ME Server-Client Verbindung über Wifi Android & Cross-Platform Mobile Apps 6
D Android JMS über Android Android & Cross-Platform Mobile Apps 4
M Über ChoiceGroup neuen Screen öffnen? Android & Cross-Platform Mobile Apps 8
J Über Zahlen steuern Android & Cross-Platform Mobile Apps 4
S DTMF-Töne über MIDlet senden Android & Cross-Platform Mobile Apps 3
Kidao Wie schließt man ein Midlet über Tasten? Android & Cross-Platform Mobile Apps 3
G SMS über Handy SMS Interface versenden Android & Cross-Platform Mobile Apps 5
B RFCOMM über serielle Schnittstelle RS 232 MIDLET Android & Cross-Platform Mobile Apps 1
T Installation über WAP Android & Cross-Platform Mobile Apps 3
J Bücher über Java-Spiele-Programmierung Android & Cross-Platform Mobile Apps 3
B Kann man bei Nokia-Handy's über Java die IR ansteuern? Android & Cross-Platform Mobile Apps 6
J Is Android Development Head First Outdated? Android & Cross-Platform Mobile Apps 3
J Android Android Datenbankverbindung zum Raspberry Pi Android & Cross-Platform Mobile Apps 1
lolcore Android Studio -Download Documentation for Android SDK Android & Cross-Platform Mobile Apps 0
S Sinnvollste weg eine SQLite DB mit Android auslesen Android & Cross-Platform Mobile Apps 7
W Problem mit Android Studio Android & Cross-Platform Mobile Apps 0
W App Abo Android Android & Cross-Platform Mobile Apps 10
OSchriever Android Android MediaPlayer bei Anruf stoppen/pausieren Android & Cross-Platform Mobile Apps 2
OSchriever Auf onClick-Listener reagieren und Parameter übergeben (Android Studio) Android & Cross-Platform Mobile Apps 4
W removeNetwork Android App mit Spendenaktion fürs Tierheim! Android & Cross-Platform Mobile Apps 1
T Android R.string.test+i Problem Android & Cross-Platform Mobile Apps 2
P undefinierbarer Fehler Android Android & Cross-Platform Mobile Apps 8
T Android ArrayList sortieren mit 2 Werten ohne thencomparing , Wie? Android & Cross-Platform Mobile Apps 10
W Variable überschreiben (Android Studio) Android & Cross-Platform Mobile Apps 2
jmar83 Android Selbst entwickelter SMTP-Client läuft auf PC, nicht aber auf Android Android & Cross-Platform Mobile Apps 9
jmar83 Android Warum muss man bei Android Studio immer 2x auf "Run" klicken damit die App auf dem Gerät startet Android & Cross-Platform Mobile Apps 8
jmar83 Android Wo das 'android.useAndroidX' property hinzufügen? Android & Cross-Platform Mobile Apps 8
jmar83 Android In einem Android-“Spinner”-Element GLEICHZEITIG Bild (links) UND Text (rechts) anzeigen Android & Cross-Platform Mobile Apps 0
P Login und Registrierung Android Anzeige Android & Cross-Platform Mobile Apps 7
S Von JavaFx zu Android Android & Cross-Platform Mobile Apps 12
K Android to Pi | Websocket Problem Android & Cross-Platform Mobile Apps 3
jmar83 Wie fügt man bei Android Studio .jar-Libraries zu einem Android-Java-Projekt hinzu? Android & Cross-Platform Mobile Apps 33
M Komponenten positionieren in Android Studio 3.6.3 Android & Cross-Platform Mobile Apps 1
M Android Studio - Property-Fenster einblenden Android & Cross-Platform Mobile Apps 1
M Android Studio - App auf dem Smartphone testen Android & Cross-Platform Mobile Apps 7
M Barrierefreie Appentwicklung für Android - Suche Codebeispiele Android & Cross-Platform Mobile Apps 8
M Android Studio - Configuration fehlt Android & Cross-Platform Mobile Apps 20
M Wo kann ich das Android SDK herunterladen / wie kann ich es installieren Android & Cross-Platform Mobile Apps 3
M Unsupported class file major version 57 - Fehlermeldung bei Android Studio Android & Cross-Platform Mobile Apps 27
jmar83 Android Studio (SDK) ANDROID_SDK_ROOT-Variable? Android & Cross-Platform Mobile Apps 5
O Web API in Android (JAVA) einbinden Android & Cross-Platform Mobile Apps 3
J Android Studio macht seltsame Sachen Android & Cross-Platform Mobile Apps 2
J Android 9.1 aber android Studio findet API22 Android & Cross-Platform Mobile Apps 0
Dimax Web-Seite in native app convertieren mit Android Studio Android & Cross-Platform Mobile Apps 8
A Android Studio: while-Schleife beginnt nicht Android & Cross-Platform Mobile Apps 5
lolcore android studio: fehler bei laden des emulators Android & Cross-Platform Mobile Apps 10
J Android App - Browser öffnen und Text eingeben/Button click auslösen Android & Cross-Platform Mobile Apps 10
A Android-Studio: 2. Layout nach kurzer Zeit aufzeigen Android & Cross-Platform Mobile Apps 2
A jpg wird im Android Studio nicht akzeptiert Android & Cross-Platform Mobile Apps 3
J Android Studio - ArrayList - Selected Item ermitteln Android & Cross-Platform Mobile Apps 13
T Android SDK-Manager startet nicht in Eclipse Android & Cross-Platform Mobile Apps 5
T Bringen mir die Java-Basics irgendetwas für die Android-Programmierung Android & Cross-Platform Mobile Apps 4
J Was soll das bedeuten ? does not require android.permission.BIND_JOB_SERVICE permission Android & Cross-Platform Mobile Apps 7
A Android Studio: ImageView verpixelt Android & Cross-Platform Mobile Apps 2
J intend Service im Android Studio Android & Cross-Platform Mobile Apps 4
L Android Android Development eventuell mit Flutter Android & Cross-Platform Mobile Apps 1
S Android Layout - welchen Typ? Android & Cross-Platform Mobile Apps 3
T Fehler Android Studio: java.net.MalformedURLException: no protocol: http%3A%2F%2Fwww.mal ..... Android & Cross-Platform Mobile Apps 2
Arif Android Android Studio: Fehler beim Einbinden fremder Bibliothek? Android & Cross-Platform Mobile Apps 2
L Android Android Contacts DB auslesen Android & Cross-Platform Mobile Apps 1
A Android Studio - App mit Nearby Android & Cross-Platform Mobile Apps 1
L Android content URI Datei einlesen Android & Cross-Platform Mobile Apps 9
N Android Game Background Service Android & Cross-Platform Mobile Apps 11
Jackii Android Android Studio Error im Testlauf ohne zu programmieren Android & Cross-Platform Mobile Apps 9
B Android Probleme mit Android Studio Android & Cross-Platform Mobile Apps 6
Excess Android Service läuft nicht in Sandby weiter Android & Cross-Platform Mobile Apps 2
B Android Projekt für Android und IOS erstellen? Android & Cross-Platform Mobile Apps 5
J App funktioniert auf Android 5, auf 6 nicht Android & Cross-Platform Mobile Apps 2
J Android Snake Android & Cross-Platform Mobile Apps 15
J Android TaschenRechner Android & Cross-Platform Mobile Apps 22
I Das Problem mit der Tastatur... android:windowSoftInputMode="adjustPan" Android & Cross-Platform Mobile Apps 1
E Wie erhalte ich Zugriff auf das Microfon? (Android Studio) Android & Cross-Platform Mobile Apps 9
C Android Programmierung speziell oder einfach Java Buch kaufen? Android & Cross-Platform Mobile Apps 3
B Android Kein Zugriff auf Telefonspeicher (Android 6) Android & Cross-Platform Mobile Apps 1
T Android Equalizer für Android Android & Cross-Platform Mobile Apps 3
L Android Android Studio - Exportierte APK funktioniert nicht Android & Cross-Platform Mobile Apps 6
L Android Methode funktioniert nicht unter Android Android & Cross-Platform Mobile Apps 3
A Beginnen mit Serverkommunikatsion in Android Studio Android & Cross-Platform Mobile Apps 6
E Android Studio Android & Cross-Platform Mobile Apps 15
L Android Android Studio Setup killt Explorer Android & Cross-Platform Mobile Apps 3
K Android Videos rendern Android & Cross-Platform Mobile Apps 1
J Variable in strings.xml (Android Studio) Android & Cross-Platform Mobile Apps 0
B Android Android Studio lässt PC abstürzen Android & Cross-Platform Mobile Apps 3
B Android App Fehler Android & Cross-Platform Mobile Apps 21
J android Spinner funktioniert nicht Android & Cross-Platform Mobile Apps 14
G Android Push Notification Android & Cross-Platform Mobile Apps 2
Light Lux Fehlermeldung unter Android Studio Android & Cross-Platform Mobile Apps 1

Ähnliche Java Themen

Anzeige

Neue Themen


Oben