Ich habe eine Desktop App in Java programmiert und wollte jetzt eine App im Android Studio schreiben.
Dazu möchte ich die Klassen verwenden die ich im Netbeans für die DesktopApp geschrieben habe.
Einige Änderungen sind natürlich notwendig, aber die Services bei der Umstellung der Services aus der DesktopApp
komm ich nicht weiter.
Ich verwende eine Klasse in der ich die SFtp Funktionen untergebracht habe. Dabei habe ich eine innere Klassse verwendet.
Diese wollte ich durch einen Intent Service ersetzen, aber ich bekommen das nicht hin.
Kann mir jemand helfen, ich denke ich mach was grundlegendes falsch oder das ist so nicht in AndroidStudio umzusetzen.
Insbesondere geht es mir um die Zeile in der ich den Service definiere.
threadDownloadBigFromHoster = new IntentService ( this , BigDownloadService.class )
Hier sagt mir AS:
Ich muss ja nicht erwähnen das ich wenig Erfahrung mit AS habe, also seid bitte gnädig. Ich weiß auch das einige Bestandteile wie z.B.
isRunning in AS für den IntendService nicht funktionen, das muss noch ändern, aber ich komme an dieser Stelle gerade überhaupt
nicht weiter.
Im Manifest habe ich den Service eingetragen.
Dazu möchte ich die Klassen verwenden die ich im Netbeans für die DesktopApp geschrieben habe.
Einige Änderungen sind natürlich notwendig, aber die Services bei der Umstellung der Services aus der DesktopApp
komm ich nicht weiter.
Ich verwende eine Klasse in der ich die SFtp Funktionen untergebracht habe. Dabei habe ich eine innere Klassse verwendet.
Diese wollte ich durch einen Intent Service ersetzen, aber ich bekommen das nicht hin.
Kann mir jemand helfen, ich denke ich mach was grundlegendes falsch oder das ist so nicht in AndroidStudio umzusetzen.
Insbesondere geht es mir um die Zeile in der ich den Service definiere.
threadDownloadBigFromHoster = new IntentService ( this , BigDownloadService.class )
Hier sagt mir AS:
Ich muss ja nicht erwähnen das ich wenig Erfahrung mit AS habe, also seid bitte gnädig. Ich weiß auch das einige Bestandteile wie z.B.
isRunning in AS für den IntendService nicht funktionen, das muss noch ändern, aber ich komme an dieser Stelle gerade überhaupt
nicht weiter.
Code:
public void bigDownloadFromHoster( String strLocalPathFileName, String strRemotePathFileName, ProgressBar probar, String[][] alternativAccess, Activity comeFromAct ) throws MalformedURLException, IOException {
/**
* Use a Thread
* Download a file from a FTP server, and show the progress in a Progressbar which is declared in the
* controller who calls this method.
* This method starts the Service [BigDownloadService] which download the sourcPath+strRemoteFileNameto the strLocalPathFileName on the local machine
*
* @param strLocalPathFileName , Destination file name on LocalMachine -> "C:/Users/Jupp/TEST/test393.mp3"
* @param strRemotePathFileName , Source path for download from a ftpServer. -> "VOICES/"
* @param probar , ProgressBar witch is in the Controller who calls this download
* @param alternativAccess , for Access on other Accounts
*
* Sample calling
* sftp.bigDownloadFromHoster("C:/Users/Jupp/VT/_downgeloaded.txt", "VOICES/", "downloadtest.txt", proba, null);
*
* @throws MalformedURLException, IOException on error.
*/
Boolean threadruns = false;
// vor der Threaderzeugung geprüft werden
if (threadDownloadBigFromHoster != null) {
threadruns = threadDownloadBigFromHoster.isRunning();
}
if (threadruns) {
AlertDialog.Builder builder;
builder = new AlertDialog.Builder(comeFromAct);
builder.setMessage("Wait till this Service has finished !")
.setTitle("SFTP Class")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
AlertDialog dialog = builder.create();
dialog.show();
} else {
connectsftp(alternativAccess);
threadDownloadBigFromHoster = new IntentService ( this , BigDownloadService.class ) {
@Override
protected void onHandleIntent(Intent intent) {
}
};
threadDownloadBigFromHoster.putExtra("probar", probar) ;
threadDownloadBigFromHoster.putExtra("strLocalPathFileName", strLocalPathFileName) ;
threadDownloadBigFromHoster.putExtra("strRemotePathFileName", strRemotePathFileName) ;
threadDownloadBigFromHoster.putExtra("channel", channel) ;
threadDownloadBigFromHoster.putExtra("session", session) ;
//threadDownloadBigFromHoster = new BigDownloadService(probar, strLocalPathFileName, strRemotePathFileName, channel, session);
//threadDownloadBigFromHoster.start();
}
}
public class BigDownloadService extends IntentService {
public BigDownloadService() {
super("BigDownloadService");
setIntentRedelivery(true);
}
public IBinder onBind(Intent intent){
// This service is unbounded
// So this method is never called.
return null;
}
@Override
protected void onHandleIntent(Intent intent) {
Bundle extras = intent.getExtras();
ProgressBar probar = (ProgressBar) extras.get("probar");
String strRemotePathFileName = (String) extras.get("strRemotePathFileName");
String strLocalPathFileName = (String) extras.get("strLocalPathFileName");
ChannelSftp SftpChannel = (ChannelSftp) extras.get("SftyChannel");
Session SftpSession = (Session) extras.get("SftpSession");
try {
SftpChannel.get(strRemotePathFileName, strLocalPathFileName, new ProgressMonitorClass(probar) );
SftpChannel.disconnect();
SftpSession.disconnect();
} catch( SftpException ex ) {
SftpChannel.disconnect();
SftpSession.disconnect();
System.err.println(ex.getMessage());
System.out.println("File #1 not downloaded.");
ex.printStackTrace();
}
}
// Destroy
@Override
public void onDestroy() {
super.onDestroy();
}
Im Manifest habe ich den Service eingetragen.
Code:
<activity android:name=".A0001_GeneralSelector"></activity>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name=".SYS.SFtpToolsClass$BigDownloadService"/>
<service android:name=".SYS.SFtpToolsClass$BigUploadService"/>
</application>