IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windev Mobile Discussion :

WindevMobile : appeller un intentService et récupérer les valeurs en retour


Sujet :

Windev Mobile

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 105
    Points : 57
    Points
    57
    Par défaut WindevMobile : appeller un intentService et récupérer les valeurs en retour
    Bonjour

    J'ai une application android développé sous Android Studio (appli externe) qui comporte des activités et des services


    J'ai besoin depuis une application WindevMobile d'appeller :

    - soit une activité de l'appli externe puis faire un retour avec l'appli windev
    - soit un service de l'application externe puis récupérer dans l'appli windev le resultat de l'execution du service.

    Pourriez-vous m'indiquer comment faire en aprticulier pour la récupération des données du service ?

    Merci d'avance

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 105
    Points : 57
    Points
    57
    Par défaut
    Bonjour


    Actuellement j'ai créé une application test Android en java qui me permet d'appeler le service, qui récupère la valeur de retour et l'affiche avec Toast et ca marche (pour l'instant ca ne fait rien d'intelligent c'est juste un test)

    Il faudrait que j'arrive à mettre ce code dans WindevMobile. Je suppose que je peux transformer l'activité en une fonction java qui appelle l'intent mais je ne vois pas du tout comment gérer le receiver. Actuellement ça affiche le résultat avec Toast mais il faudra aussi que j'arrive a le donner à Windev...

    Un grand merci d'avance pour votre aide précieuse.

    Voici le code de mon activité principale

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    package fr.nat.servicetestapp;
     
    import android.content.BroadcastReceiver;
    import android.content.ComponentName;
    import android.content.Context;
    import android.content.Intent;
    import android.os.Handler;
    import android.os.Parcel;
    import android.os.ResultReceiver;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    import android.widget.Toast;
     
    import fr.nat.servicetestapp.TestReceiver;
     
    public class MainActivity extends AppCompatActivity {
     
     
        private static final String EXTRA_PARAM1 = "fr.nat.siboxpasserelle.services.extra.PARAM1";
        private static final String EXTRA_PARAM2 = "fr.nat.siboxpasserelle.services.extra.PARAM2";
        private static final String ACTION_FOO = "fr.nat.siboxpasserelle.services.action.FOO";
        private static final String ACTION_BAZ = "fr.nat.siboxpasserelle.services.action.BAZ";
        public TestReceiver receiverForTest;
     
     
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            setupServiceReceiver();
     
            Button button_baz = (Button) findViewById(R.id.button_baz);
     
            button_baz.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    // on lance le service
                    Intent msgIntent = new Intent(Intent.ACTION_MAIN);
                    msgIntent.putExtra(EXTRA_PARAM1,"BONJOUR");
                    msgIntent.putExtra(EXTRA_PARAM2,"BONSOIR");
                    msgIntent.setAction(ACTION_BAZ);
                    msgIntent.setComponent(new ComponentName("fr.nat.siboxpasserelle","fr.nat.siboxpasserelle.services.MyIntentService"));
                    msgIntent.putExtra("receiver", receiverForSending(receiverForTest));
     
                    startService(msgIntent);
                }
            });
     
     
            Button button_foo = (Button) findViewById(R.id.button_foo);
            button_foo.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    // on lance le service
                    Intent msgIntent = new Intent(Intent.ACTION_MAIN);
                    msgIntent.putExtra(EXTRA_PARAM1,"GOODMORNING");
                    msgIntent.putExtra(EXTRA_PARAM2,"GOODNIGHT");
                    msgIntent.setAction(ACTION_FOO);
                    msgIntent.putExtra("receiver", receiverForSending(receiverForTest));
                    msgIntent.setComponent(new ComponentName("fr.nat.siboxpasserelle","fr.nat.siboxpasserelle.services.MyIntentService"));
     
     
                    startService(msgIntent);
     
                }
     
            });
     
     
     
     
        }
     
     
        // Setup the callback for when data is received from the service
        public void setupServiceReceiver() {
            receiverForTest = new TestReceiver(new Handler());
            // This is where we specify what happens when data is received from the service
            receiverForTest.setReceiver(new TestReceiver.Receiver() {
                @Override
                public void onReceiveResult(int resultCode, Bundle resultData) {
                    if (resultCode == RESULT_OK) {
                        String resultValue = resultData.getString("resultValue");
                        Toast.makeText(MainActivity.this, resultValue, Toast.LENGTH_SHORT).show();
                    }
                }
            });
        }
     
     
        public static ResultReceiver receiverForSending(ResultReceiver actualReceiver) {
            Parcel parcel = Parcel.obtain();
            actualReceiver.writeToParcel(parcel,0);
            parcel.setDataPosition(0);
            ResultReceiver receiverForSending = ResultReceiver.CREATOR.createFromParcel(parcel);
            parcel.recycle();
            return receiverForSending;
        }
    }

    Et voici le code du receiver
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    package fr.nat.servicetestapp;
     
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.ResultReceiver;
     
    public class TestReceiver extends ResultReceiver {
     
        // Defines a generic receiver used to pass data to Activity from a Service
     
        private Receiver receiver;
     
     
        // Constructor takes a handler
        public TestReceiver(Handler handler) {
            super(handler);
        }
     
        // Setter for assigning the receiver
        public void setReceiver(Receiver receiver) {
            this.receiver = receiver;
        }
     
        // Defines our event interface for communication
        public interface Receiver {
            void onReceiveResult(int resultCode, Bundle resultData);
        }
     
        // Delegate method which passes the result to the receiver if the receiver has been assigned
        @Override
        protected void onReceiveResult(int resultCode, Bundle resultData) {
            if (receiver != null) {
                receiver.onReceiveResult(resultCode, resultData);
            }
        }
    }

Discussions similaires

  1. DBGrid récupérer les valeurs de l'enregistrement courant
    Par bob_sapp dans le forum Bases de données
    Réponses: 5
    Dernier message: 06/09/2014, 07h56
  2. [MySQL] Récupérer les valeurs définies dans un champ ENUM
    Par Huntress dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 03/07/2010, 18h55
  3. récupérer les valeurs de checkbox
    Par liichiii dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 11/08/2005, 16h27
  4. [FB] récupérer les valeurs pas défaut
    Par Emmanuel Lecoester dans le forum SQL
    Réponses: 1
    Dernier message: 05/01/2005, 14h37
  5. [Couleur] Récupérer les valeurs R,V,B et L,U,V ?
    Par M4v3rick dans le forum C++Builder
    Réponses: 4
    Dernier message: 25/01/2004, 03h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo