lordzwieback
Erfahrenes Mitglied
- 210
Guten Morgen,
ich habe bei zwei verschiedenen AsyncTasks einige Probleme und kann nicht herausfinden, woran es liegt. Wie der Überschrift zu entnehmen ist, handelt es sich einmal um eine Methode zum Download von Dateien von einem FTP Server und zum anderen um eine Methode, welche mir die Dateien aus meinem aktuellen Verzeichnis im Log aufzeichnet.
AsyncTask FTP Download:
Hier springt er immer in die Exception -> Ausgabe "Error: could not download file from /home/XYOrdner to /storage/emulated/0/App_Ordner
AsyncTask "Liste Dateien aus Directory auf"
Hier wird einfach nichts im Log angezeigt. Ja, es sind Dateien in den angegebenen Ordner drin (momentan eine Datei zum testen, Textdatei).
Falls die Frage aufkommt:
Meiner Manifest.xml habe ich folgende Zeilen schon eingebaut.
EDIT:
Hier werden die AsyncTasks dann gestartet.
Die Berechtigung habe ich dann in den Androideinstellungen unter App -> meine App -> Berechtigungen dann auch nochmal explizit eingeschaltet.
Für Tipps wäre ich sehr dankbar.
Grüße,
lordzwieback
ich habe bei zwei verschiedenen AsyncTasks einige Probleme und kann nicht herausfinden, woran es liegt. Wie der Überschrift zu entnehmen ist, handelt es sich einmal um eine Methode zum Download von Dateien von einem FTP Server und zum anderen um eine Methode, welche mir die Dateien aus meinem aktuellen Verzeichnis im Log aufzeichnet.
AsyncTask FTP Download:
Code:
// download file(s) from ftp server
private class _async_ftp_downloadFile extends AsyncTask<String, Void, Boolean> {
private String srcFilePath;
private String dstFilePath;
// constructor method
public _async_ftp_downloadFile(String src, String dst) {
this.srcFilePath = src;
this.dstFilePath = dst;
}
@Override
protected Boolean doInBackground(String... strings) {
Boolean status = false;
try {
FileOutputStream dstFileStream = new FileOutputStream(dstFilePath);
status = mFTPClient.retrieveFile(srcFilePath, dstFileStream);
dstFileStream.close();
Log.d(TAG, "Successfully downloaded file(s).");
return status;
} catch (Exception e) {
Log.d(TAG, "Error: could not download file(s) from " + srcFilePath + " to " + dstFilePath);
}
return status;
}
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
if (result) {
ergebnis.append("\n-- Daten wurden von " + srcFilePath + " nach " + dstFilePath + " transferiert.");
} else {
ergebnis.append("\n-- Daten konnten nicht von " + srcFilePath + " nach " + dstFilePath + " transferiert werden.");
}
}
}
AsyncTask "Liste Dateien aus Directory auf"
Code:
//list files from working directory into LOG
private class _async_ftp_listFiles extends AsyncTask<String, Void, Void> {
private String dir;
// constructor
public _async_ftp_listFiles(String directory) {
this.dir = directory;
}
@Override
protected Void doInBackground(String... strings) {
try {
FTPFile[] ftpFiles = mFTPClient.listFiles(dir);
int length = ftpFiles.length;
for (int i = 0; i<length; i++) {
String name = ftpFiles[i].getName();
boolean isFile = ftpFiles[i].isFile();
if (isFile) {
Log.i(TAG, "File: " + name);
} else {
Log.i(TAG, "Directory: " + name);
}
}
} catch (Exception e) {
Log.e(TAG, "Error: Files and / or directory cant be listed.");
e.printStackTrace();
}
return null;
}
}
Falls die Frage aufkommt:
Meiner Manifest.xml habe ich folgende Zeilen schon eingebaut.
Code:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
EDIT:
Hier werden die AsyncTasks dann gestartet.
Code:
ftpSync.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ergebnis.setText("");
new _async_ftp_conn(ftpHost.getText().toString(), ftpUsername.getText().toString(), ftpPassword.getText().toString()).execute();
new _async_ftp_changeDir(ftpStandardDir.getText().toString()).execute();
new _async_ftp_listFiles(ftpStandardDir.getText().toString()).execute();
new _async_ftp_downloadFile(ftpStandardDir.getText().toString(), Environment.getExternalStorageDirectory() + "/Inspektionsmodul").execute();
new _async_ftp_disc().execute();
}
});
Die Berechtigung habe ich dann in den Androideinstellungen unter App -> meine App -> Berechtigungen dann auch nochmal explizit eingeschaltet.
Für Tipps wäre ich sehr dankbar.
Grüße,
lordzwieback
Zuletzt bearbeitet: