intend Service im Android Studio

Joob

Top Contributor
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:

12151

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();
        }

12150


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>
 
K

kneitzel

Gast
Die Fehlermeldung besagt, dass IntentService einen Constructor hat, der ein Strring als Argument erwartet ("IntentService(java.lang.String) in IntentService") und kann nicht mit den zwei Parametern vom Typ SFtpToolClass und Class<BigDownloadService> aufgerufen werden ("cannot be applied to (.....)").

Also ich würde hier die Klasse IntentService näher ansehen um die Klasse dann so zu nutzen, wie es angedacht ist. Die Doku der Klasse findet sich unter https://developer.android.com/reference/android/app/IntentService
 

Joob

Top Contributor
In den Beispielen wird der intendservice immer so gestartet.

Intent i = new Intent(this, NetworkService.class);

in der Beschreibung wird als Parameter String angegeben.
Was meinen die damit ?
 
K

kneitzel

Gast
Also Intent ist eine andere Klasse als IntentService.

Das Beispiel jetzt nutzt die Klasse Intent, dein Code den Du gezeigt hast, nutzte die Klasse IntentService.

Intents sind Nachrichten zwischen Android Komponenten. Ein IntentService ist dabei ein Empfänger eines solchen Nachricht und Intent ist eine Nachricht.

Somit sollte Deine Klasse, die den Intent verarbeiten soll, IntentService erweitern, damit Du der Komponente ein Intent zuschicken kannst.

Ich würde Dir empfehlen, das alles erst einmal von Grund auf zu lesen. Es erspart später einige Zeit, wenn man sich am Anfang einmal in Ruhe anschaut, wie es bei Android abläuft.

Um auf das putExtra einzugehen: Da gibt es ganz viele Overloads um alle möglichen Daten zu speichern. Wenn Du unter https://developer.android.com/reference/android/content/Intent#public-methods mal schaust, dann siehst Du, wie viele putExtra Varianten es gibt.
 

Joob

Top Contributor
Schönen Dank für deine Erklärung. Ich versteh das so besser !

Ich schau mir das noch mal an.
Hatte halt gedacht ich könnte die Klassen ohne großen Aufwand verwenden können,
hatte aber schon das Gefühl das das wegen der Rahmenbedingungen von Android
das nicht so klappen könnte.

Ich fass das noch mal ganz neu an.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Wieso gehen Log nicht im Service? Android & Cross-Platform Mobile Apps 20
W Background Service Daten verarbeiten/Schleife ect. Android & Cross-Platform Mobile Apps 1
L Unzuverlässiger Service Android & Cross-Platform Mobile Apps 1
J Service starte nicht mehr Android & Cross-Platform Mobile Apps 13
L Eingaben in der MainActivity einem Service übergeben Android & Cross-Platform Mobile Apps 0
L Prüfen ob Service läuft Android & Cross-Platform Mobile Apps 3
N Android Game Background Service Android & Cross-Platform Mobile Apps 11
Excess Android Service läuft nicht in Sandby weiter Android & Cross-Platform Mobile Apps 2
G GPS in einem Service abfragen Android & Cross-Platform Mobile Apps 2
D Java ME Bild vom Web-Service aus zurück geben Android & Cross-Platform Mobile Apps 8
T Android Datenbankverbindung in Service für Push Notification Android & Cross-Platform Mobile Apps 0
G Thread in einer Service erstellen Android & Cross-Platform Mobile Apps 0
S Android In Service überprüfen ob eine Activity gebunden ist? Android & Cross-Platform Mobile Apps 6
S Android Kommunikation zwischen UI -> Service -> Thread Android & Cross-Platform Mobile Apps 4
C Android Kommunikation zwischen Service und Activity Android & Cross-Platform Mobile Apps 8
D Android selben Service mehrmals Aufrufen Android & Cross-Platform Mobile Apps 17
L Android Zugriff aus unbound Service auf Preferences Android & Cross-Platform Mobile Apps 2
J Benachrichtigung Freigabe ab Android 14 Android & Cross-Platform Mobile Apps 1
J Android Benachrichtigung zum Zeitpunkt ers Android & Cross-Platform Mobile Apps 15
J Das Beispiel von Android erzeugt Fehler Android & Cross-Platform Mobile Apps 8
J Zeitdifferenzen unter Android 7 (API < 26) berechnen Android & Cross-Platform Mobile Apps 4
W Netzwerk Verbindungen Java Android Android & Cross-Platform Mobile Apps 107
Z Android IntelliJ Android & Cross-Platform Mobile Apps 2
M Repository bei Room-Database in Android Studio (Java) Android & Cross-Platform Mobile Apps 2
Android App auf das eigene Handy bekommen Android & Cross-Platform Mobile Apps 3
Alex IV Android App erstellen Android & Cross-Platform Mobile Apps 3
OnDemand CrossPlatform Kotlin iOs/Android Datenverbrauch Android & Cross-Platform Mobile Apps 2
W In Android Studio Integer an andere activities übergeben Android & Cross-Platform Mobile Apps 2
wladp Android Studio Room Database Android & Cross-Platform Mobile Apps 1
N "Schöne" Datatable in Android und setzen von Parametern von Textview im Code Android & Cross-Platform Mobile Apps 5
N Android game programmieren Android & Cross-Platform Mobile Apps 5
T Android Studio: Einen Button in einer For Schleife verwenden Android & Cross-Platform Mobile Apps 2
K BLE Komunikation mit Android studio und esp32 Android & Cross-Platform Mobile Apps 5
G Android UDP Kommunikation Android & Cross-Platform Mobile Apps 1
M Paper DB wird in Android Studio nicht erkannt Android & Cross-Platform Mobile Apps 7
J Android zugrif auf Thread nach Handy drehen. Android & Cross-Platform Mobile Apps 10
T Android Android Augmented Faces in Java. Neue Landmarks erstellen Android & Cross-Platform Mobile Apps 1
K Android Android In-App-Purchase lädt nicht Android & Cross-Platform Mobile Apps 0
Besset Android http request an interne ip adresse funktioniert nicht Android & Cross-Platform Mobile Apps 8
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
ruutaiokwu Android Selbst entwickelter SMTP-Client läuft auf PC, nicht aber auf Android Android & Cross-Platform Mobile Apps 9
ruutaiokwu 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
ruutaiokwu Android Wo das 'android.useAndroidX' property hinzufügen? Android & Cross-Platform Mobile Apps 8
ruutaiokwu 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
ruutaiokwu 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
ruutaiokwu 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
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
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
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

Ähnliche Java Themen

Neue Themen


Oben