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

Android Discussion :

Synchronisation application Android


Sujet :

Android

  1. #21
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2005
    Messages : 103
    Points : 203
    Points
    203
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
           <service android:name=".BackgroundService" />
    Le point est important (même si je suis pas sur que ça règle le problème) et le fait de rajouter le déclenchement sur MAIN me semble bizarre (à voir), surtout qu'il est démarré en appel direct dans ton activité "new Intent(WS_SAP_activity.this, BackgroundService.class)" pas par action.

    Sinon il y a effectivement un NPE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Caused by: java.lang.NullPointerException
    06-03 12:26:18.726: ERROR/AndroidRuntime(291):     at com.kalydia.WS_SAP_activity.onCreate(WS_SAP_activity.java:40)
    La ligne 40 de WS_SAP_activity c'est bien ça BackgroundService.getService().addListener ?

  2. #22
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par Aerinder Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
           <service android:name=".BackgroundService" />
    Le point est important (même si je suis pas sur que ça règle le problème) et le fait de rajouter le déclenchement sur MAIN me semble bizarre (à voir), surtout qu'il est démarré en appel direct dans ton activité "new Intent(WS_SAP_activity.this, BackgroundService.class)" pas par action.

    En faite pour le service je l'ai ajouter en utilisant le wizard de androidManifest c'est à dire que j'ai pas écrit manuellement j'ai cliqué sur add service et j'ai choisi mon service.

    Pour le MAIN dans le service j'ai pensé que je doit ajouter un indent.MAIN pour ma classe BroadcastReceiver car j'ai voulu quand le service s'exécute et il y a un changement une notification s'affiche


    Sinon il y a effectivement un NPE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Caused by: java.lang.NullPointerException
    06-03 12:26:18.726: ERROR/AndroidRuntime(291):     at com.kalydia.WS_SAP_activity.onCreate(WS_SAP_activity.java:40)
    La ligne 40 de WS_SAP_activity c'est bien ça BackgroundService.getService().addListener ?
    oui c'est la ligne 40


    merci,

  3. #23
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2005
    Messages : 103
    Points : 203
    Points
    203
    Par défaut
    Pour le filter sur action MAIN pour le Service pas besoin, comme le service est lancé par l'activité qui elle même est lancé par l'action MAIN, il sera lancé au démarrage de l'application.

    Sinon j'ai pas trop compris cette phrase :
    Pour le MAIN dans le service j'ai pensé que je doit ajouter un indent.MAIN pour ma classe BroadcastReceiver car j'ai voulu quand le service s'exécute et il y a un changement une notification s'affiche

  4. #24
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par Aerinder Voir le message
    Pour le filter sur action MAIN pour le Service pas besoin, comme le service est lancé par l'activité qui elle même est lancé par l'action MAIN, il sera lancé au démarrage de l'application.

    Sinon j'ai pas trop compris cette phrase :
    Désolé ;-)

    si vous vous rappelez bien le début de cette discussion j'ai voulu créer une application qui appel un service web à chaque intervalle de temps après il affiche une notification dans l'application comme l'application mail, c'est pour ça j'ai pensé que je devrais ajouter intent.MAIN dans le service dans le but d'avoir la notification à chaque fois ou le service est exécuté voici ma classe que j'ai utilisé

    Code : 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
     
    public class ReceiverWF extends BroadcastReceiver {
     
     
     
    	@Override
    	public void onReceive(Context context, Intent intent) {
    		// TODO Auto-generated method stub
    		if (intent.getAction().equals(WS_SAP_activity.ACTION_RECEIVE_WF))
    		{
    			Bundle bundle = intent.getExtras();
    			if (bundle != null)
    			{
     
    				System.out.println("GOT THE INTENT");
     
    				Toast.makeText(context, "test : ", 0 );
     
     
    			}
     
    		}
    	}
     
    }
    j'ai déclaré dans mon activité cette variable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public static  final String	ACTION_RECEIVE_WF	= "android.intent.action.MAIN";

    et j'ai ajouté dans la methode onCreate de l'activité ces instructions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    intent.setAction(ACTION_RECEIVE_WF);
    		sendBroadcast(intent);
    Je ne sais pas si ma démarche est juste ?

    merci,

  5. #25
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2005
    Messages : 103
    Points : 203
    Points
    203
    Par défaut
    Le principe est correct, après je suis pas sur que ce soit nécessaire.

    Sinon il faudrait écrire une Action personnalisé car android.intent.action.MAIN est réservé au système android. J'ai peur que ce soit source de bug.

    Du genre "com.kalydia.action.UPDATE".

    Je vais essayer de tester les morceaux de code (ça m'intrigue).

    EDIT : Effectivement le Service n'est pas lancé (onCreate) donc du coup le getService() est null.
    Par contre au lieu d'utiliser un système de listener et du coup de bloquer sur le getService() (à noter que j'ai testé avec un Binder et ça fonctionne).

    Pourquoi ne pas remplacer le fireDataChanged par un sendBroadcast() et du coup utiliser un BroadcastReceiver.

  6. #26
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par Aerinder Voir le message
    Le principe est correct, après je suis pas sur que ce soit nécessaire.

    Sinon il faudrait écrire une Action personnalisé car android.intent.action.MAIN est réservé au système android. J'ai peur que ce soit source de bug.

    Du genre "com.kalydia.action.UPDATE".

    Je vais essayer de tester les morceaux de code (ça m'intrigue).

    EDIT : Effectivement le Service n'est pas lancé (onCreate) donc du coup le getService() est null.
    Par contre au lieu d'utiliser un système de listener et du coup de bloquer sur le getService() (à noter que j'ai testé avec un Binder et ça fonctionne).

    Pourquoi ne pas remplacer le fireDataChanged par un sendBroadcast() et du coup utiliser un BroadcastReceiver.
    Bonjour,

    Désolé pour tout ce retard,

    Ok je vais le changer en binder, même le tuto que vous m'avez donné il parle de deux façons pour les service je me met toute de suite.

    Pour le broadcast j'ai utilisé les deux méthodes fireDataChanged par un sendBroadcast() dans la méthode onStartCommand du service,


    merci,

  7. #27
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Points : 52
    Points
    52
    Par défaut
    Bonjour Aerinder
    Citation Envoyé par Aerinder Voir le message
    Le principe est correct, après je suis pas sur que ce soit nécessaire.

    Sinon il faudrait écrire une Action personnalisé car android.intent.action.MAIN est réservé au système android. J'ai peur que ce soit source de bug.

    Du genre "com.kalydia.action.UPDATE".

    j'ai crée un nouvelle action
    public static Intent ii= new Intent ("android.intent.action.WF");


    Je vais essayer de tester les morceaux de code (ça m'intrigue).

    EDIT : Effectivement le Service n'est pas lancé (onCreate) donc du coup le getService() est null.
    Par contre au lieu d'utiliser un système de listener et du coup de bloquer sur le getService() (à noter que j'ai testé avec un Binder et ça fonctionne).

    pour moi ça n'a pas fonctionné, juste j'ai une ou deux question les méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ServiceConnection connection = new ServiceConnection() { 
    		    public void onServiceConnected(ComponentName name, IBinder service) { 
    		        Log.i("BackgroundService", "Connected!"); 
    		        IBackgroundService service1 = ((BackgroundServiceBinder)service).getService(); 
    		        IBackgroundServiceListener listener = null ;
    				service1.addListener(listener); 
    		    } 
     
    		    public void onServiceDisconnected(ComponentName name) { 
    		        Log.i("BackgroundService", "Disconnected!"); 
    		    }  
    		}; 
     
    		bindService(intent,connection, Context.BIND_AUTO_CREATE);
    je doit faire les appel à l'intérieur de la méthode onCreate de ma classe Activity car il m'affiche une exception de ce type

    Code : 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
     
    06-06 09:17:02.735: ERROR/AndroidRuntime(447): FATAL EXCEPTION: main
    06-06 09:17:02.735: ERROR/AndroidRuntime(447): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.kalydia/com.kalydia.WS_SAP_activity}: java.lang.NullPointerException
    06-06 09:17:02.735: ERROR/AndroidRuntime(447):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
    06-06 09:17:02.735: ERROR/AndroidRuntime(447):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
    06-06 09:17:02.735: ERROR/AndroidRuntime(447):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
    06-06 09:17:02.735: ERROR/AndroidRuntime(447):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
    06-06 09:17:02.735: ERROR/AndroidRuntime(447):     at android.os.Handler.dispatchMessage(Handler.java:99)
    06-06 09:17:02.735: ERROR/AndroidRuntime(447):     at android.os.Looper.loop(Looper.java:123)
    06-06 09:17:02.735: ERROR/AndroidRuntime(447):     at android.app.ActivityThread.main(ActivityThread.java:4627)
    06-06 09:17:02.735: ERROR/AndroidRuntime(447):     at java.lang.reflect.Method.invokeNative(Native Method)
    06-06 09:17:02.735: ERROR/AndroidRuntime(447):     at java.lang.reflect.Method.invoke(Method.java:521)
    06-06 09:17:02.735: ERROR/AndroidRuntime(447):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    06-06 09:17:02.735: ERROR/AndroidRuntime(447):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    06-06 09:17:02.735: ERROR/AndroidRuntime(447):     at dalvik.system.NativeStart.main(Native Method)
    06-06 09:17:02.735: ERROR/AndroidRuntime(447): Caused by: java.lang.NullPointerException
    06-06 09:17:02.735: ERROR/AndroidRuntime(447):     at com.kalydia.WS_SAP_activity.onCreate(WS_SAP_activity.java:48)
    06-06 09:17:02.735: ERROR/AndroidRuntime(447):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    06-06 09:17:02.735: ERROR/AndroidRuntime(447):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
    06-06 09:17:02.735: ERROR/AndroidRuntime(447):     ... 11 more
    voici les méthodes que j'ai ajouté dans ma classe service
    Code : 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
     
    public void onCreate() { 
     
    		timer = new Timer(); 
    		 binder = new BackgroundServiceBinder(this);    
    	        _onStart(); 
    	}
     
    	private void _onStart() {
    		// TODO Auto-generated method stub
    		timer.scheduleAtFixedRate(new TimerTask() { 
                public void run() { 
                    if(listeners != null){ 
                    	CallWS();
                        fireDataChanged(new String()); 
                        sendBroadcast(WS_SAP_activity.ii);
                } 
            }}, 0, 60000); 
    	}
     
     
     
    	public int onStartCommand(Intent intent, int flags, final int startId) { 
     
    		_onStart();
     
    		return START_NOT_STICKY;
     
    	}
    Pourquoi ne pas remplacer le fireDataChanged par un sendBroadcast() et du coup utiliser un BroadcastReceiver.
    Est ce que nous pouvons utiliser ces deux méthodes (fireDataChanged && sendBroadcast()) en même temps


    merci,

  8. #28
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2005
    Messages : 103
    Points : 203
    Points
    203
    Par défaut
    Bonjour,

    Pourriez-vous poster le projet, ou les classes en entier pour voir avec les modifications ce que ça donne.

    Pour le fireDataChanged et le sendBroadcast les utiliser ensemble ne pose pas de problème par contre qui est abonné au sendBroadcast au niveau du manifest (filter action) ?

    Je vois pas trop l'ensemble de code mais juste une remarque, le sendBroadcast et l'exécution de la tâche ne devrait pas être déterminé par le fait que listeners soit valué (j'aurais vu un truc plus comme ça) :
    public void run() {

    String s = CallWS();
    fireDataChanged(s);
    Intent intent = new Intent();
    intent.putExtra("cleValeurCallWS", s);
    intent.setAction(WS_SAP_activity.ACTION);
    sendBroadcast(intent);
    }

  9. #29
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par Aerinder Voir le message
    Bonjour,

    Pourriez-vous poster le projet, ou les classes en entier pour voir avec les modifications ce que ça donne.

    je t'envoie le projet mon package c'est com.kalydia

    Pour le fireDataChanged et le sendBroadcast les utiliser ensemble ne pose pas de problème par contre qui est abonné au sendBroadcast au niveau du manifest (filter action) ?

    oui je me suis abonné au sendBroadcast en ajoutant le receiver

    Je vois pas trop l'ensemble de code mais juste une remarque, le sendBroadcast et l'exécution de la tâche ne devrait pas être déterminé par le fait que listeners soit valué (j'aurais vu un truc plus comme ça) :
    Fichiers attachés Fichiers attachés

  10. #30
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2005
    Messages : 103
    Points : 203
    Points
    203
    Par défaut
    En fait l'utilisation du binder rend inutile l'utilisation d'une référence statique vers le Service, du coup l'appel dans le onCreate de WS_SAP_activity du getService est inutile (et surtout provoque un NPE).

    J'ai pas testé mais je pense que ça devrait marcher :

    Dans WS_SAP_activity :
    Code : 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
        @Override
        public void onCreate(Bundle savedInstanceState) {
     
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
     
            mButton =(Button) findViewById(R.id.button1);
            tf=(TextView) findViewById(R.id.editText2);
     
            mButton.setOnClickListener(this);
     
            Intent intent = new Intent(this, BackgroundService.class); 
     
            ServiceConnection connection = new ServiceConnection() { 
                public void onServiceConnected(ComponentName name, IBinder service) { 
                    Log.i("BackgroundService", "Connected!"); 
                    IBackgroundService service1 = ((BackgroundServiceBinder)service).getService(); 
                    service1.addListener(listener); 
                } 
     
                public void onServiceDisconnected(ComponentName name) { 
                    Log.i("BackgroundService", "Disconnected!"); 
                }  
            }; 
     
            bindService(intent,connection, Context.BIND_AUTO_CREATE);
        }
     
        final IBackgroundServiceListener listener = new IBackgroundServiceListener() { 
            public void dataChanged(final Object data) { 
                MyActivity.this.runOnUiThread(new Runnable() { 
                    public void run() { 
                    tf.setText((String) data);
                    } 
                }); 
            } 
        };
    Dans BackgroundService (faut retirer le private static IBackgroundService service; et les méthodes s'y rattachant) puis dans le _onStart j'aurais fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        private void _onStart() {
            timer.scheduleAtFixedRate(new TimerTask() { 
                public void run() { 
                     String rs="";
                     rs=CallWS();
                     fireDataChanged(rs); 
    Intent intent = new Intent();
                         intent.putExtra("cleValeurCallWS", s);
                        intent.setAction(WS_SAP_activity.ACTION_RECEIVE_WF);
                        sendBroadcast(intent);
     
            }}, 0, 60000); 
        }
    Dans AndroidManifest.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            <receiver android:name=".ReceiverWF">
                <intent-filter>
                    <action android:name="android.intent.action.WF" />
                </intent-filter>
            </receiver>
    ReceiverWF (juste récupération de l'info) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(WS_SAP_activity.ACTION_RECEIVE_WF)) {
                Bundle bundle = intent.getExtras();
                if (bundle != null) {
                    Toast.makeText(context, intent.getStringExtra("cleValeurCallWS"), Toast.LENGTH_LONG).show();
                }
            }
        }
    J'ai pas testé mais ça devrait marcher.

  11. #31
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par Aerinder Voir le message
    En fait l'utilisation du binder rend inutile l'utilisation d'une référence statique vers le Service, du coup l'appel dans le onCreate de WS_SAP_activity du getService est inutile (et surtout provoque un NPE).

    J'ai pas testé mais je pense que ça devrait marcher :

    Dans WS_SAP_activity :
    Code : 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
        @Override
        public void onCreate(Bundle savedInstanceState) {
     
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
     
            mButton =(Button) findViewById(R.id.button1);
            tf=(TextView) findViewById(R.id.editText2);
     
            mButton.setOnClickListener(this);
     
            Intent intent = new Intent(this, BackgroundService.class); 
     
            ServiceConnection connection = new ServiceConnection() { 
                public void onServiceConnected(ComponentName name, IBinder service) { 
                    Log.i("BackgroundService", "Connected!"); 
                    IBackgroundService service1 = ((BackgroundServiceBinder)service).getService(); 
                    service1.addListener(listener); 
                } 
     
                public void onServiceDisconnected(ComponentName name) { 
                    Log.i("BackgroundService", "Disconnected!"); 
                }  
            }; 
     
            bindService(intent,connection, Context.BIND_AUTO_CREATE);
        }
     
        final IBackgroundServiceListener listener = new IBackgroundServiceListener() { 
            public void dataChanged(final Object data) { 
                MyActivity.this.runOnUiThread(new Runnable() { 
                    public void run() { 
                    tf.setText((String) data);
                    } 
                }); 
            } 
        };
    Dans BackgroundService (faut retirer le private static IBackgroundService service; et les méthodes s'y rattachant) puis dans le _onStart j'aurais fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        private void _onStart() {
            timer.scheduleAtFixedRate(new TimerTask() { 
                public void run() { 
                     String rs="";
                     rs=CallWS();
                     fireDataChanged(rs); 
    Intent intent = new Intent();
                         intent.putExtra("cleValeurCallWS", s);
                        intent.setAction(WS_SAP_activity.ACTION_RECEIVE_WF);
                        sendBroadcast(intent);
     
            }}, 0, 60000); 
        }
    Dans AndroidManifest.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            <receiver android:name=".ReceiverWF">
                <intent-filter>
                    <action android:name="android.intent.action.WF" />
                </intent-filter>
            </receiver>
    ReceiverWF (juste récupération de l'info) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(WS_SAP_activity.ACTION_RECEIVE_WF)) {
                Bundle bundle = intent.getExtras();
                if (bundle != null) {
                    Toast.makeText(context, intent.getStringExtra("cleValeurCallWS"), Toast.LENGTH_LONG).show();
                }
            }
        }
    J'ai pas testé mais ça devrait marcher.
    ça fonctionne :-) je vous remercie mais juste il y a un petit problème dans l'affichage du résultat il n'affiche rien plus précisément dans cette partie du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     final IBackgroundServiceListener listener = new IBackgroundServiceListener() { 
            public void dataChanged(final Object data) { 
                MyActivity.this.runOnUiThread(new Runnable() { 
                    public void run() { 
                    tf.setText((String) data); // ici
                    } 
                }); 
            } 
        };
    je vais me pencher la dessus je ne veut pas vous déranger encore plus encore une petite question dans la méthode onReceive y a t-il un moyen que l'information récupérer soit afficher dans la barre de menu comme une notification ?

    merci encore,

  12. #32
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2005
    Messages : 103
    Points : 203
    Points
    203
    Par défaut
    Pour le premier point faut vérifier que CallWS retourne bien une chaine valué.

    Sinon pour le deuxième il faut utiliser le NotificationManager http://developer.android.com/guide/t...fications.html

  13. #33
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par Aerinder Voir le message
    Pour le premier point faut vérifier que CallWS retourne bien une chaine valué.

    c'est encore moi je vous promets c'est la dernière question pour aujourd’hui :-)
    j'ai bien vérifier le type de retour même j'ai affiché dans le champs tf le résultat voulu aussi dans l'ancienne version s'affiche mais ici ça n'affiche pas
    une idée !!!!

    merci,


  14. #34
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Points : 52
    Points
    52
    Par défaut cause du problème
    Bonjour,

    je pense que le problème vient d'ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    final IBackgroundServiceListener listener = new IBackgroundServiceListener() { 
            public void dataChanged(final String o) { 
                WS_SAP_activity.this.runOnUiThread(new Runnable() { 
                    public void run() { 
                   Log.d(this.getClass().getName(), "je suis dans le run"); 
                    tf.setText(o.toString());
                    } 
                }); 
            }
     
        };
    en faite c'est que l'application n'exécute pas cette partie du code j'ai placé des message de debug à l'extérieur et à l'intérieur et les message à l’intérieur de run ne s'affiche pour une raison que je l'ignore
    aurez-vous une idée

    merci,

  15. #35
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2005
    Messages : 103
    Points : 203
    Points
    203
    Par défaut
    Quand le fireDataChanged est appelé y a t'il des listeners dans la liste des listeners ?

  16. #36
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par Aerinder Voir le message
    Quand le fireDataChanged est appelé y a t'il des listeners dans la liste des listeners ?
    Bonjour,

    Oui j'ai bien vérifier mon listeners il existe des listeners

    merci,

  17. #37
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Points : 52
    Points
    52
    Par défaut
    Bonjour,

    là je suis vraiment bloqué j'ai essayé toute les solutions possible mais ça ne marche pas pourtant comme j'ai déjà mentionné mon listenners est rempli mais le problème c'est que dans la classe activity la méthode run ne s’exécute pas
    une idée ?

    merci,

  18. #38
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Points : 52
    Points
    52
    Par défaut
    Bonjour,

    est ce que je peut poster ma question dans un autre sujet de discutions ?

  19. #39
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Vous pouvez ouvrir une nouvelle discussion que si et seulement si la question posé ne porte pas sur le même sujet que celui précédemment.

    Merci de bien vouloir lire les règles du forum .
    http://club.developpez.com/regles/

    Sinon pour revenir à ta question, si je comprends bien tu rentres dans la fonction dataChanged mais le Runnable n'est pas exécuté , est ce bien cela ?
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  20. #40
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Points : 52
    Points
    52
    Par défaut
    Bonjour

    Citation Envoyé par Feanorin Voir le message
    Vous pouvez ouvrir une nouvelle discussion que si et seulement si la question posé ne porte pas sur le même sujet que celui précédemment.

    Moi aussi j'ai pensé que je l'ai fait une fois inconsciemment et j'ai reçu un avertissement

    Merci de bien vouloir lire les règles du forum .
    http://club.developpez.com/regles/

    Sinon pour revenir à ta question, si je comprends bien tu rentres dans la fonction dataChanged mais le Runnable n'est pas exécuté , est ce bien cela ?
    Oui, j'ai même vérifier mon listenners est il contient bien des événements

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. Intégration de Google Maps dans votre application Android
    Par michel.di dans le forum API standards et tierces
    Réponses: 22
    Dernier message: 07/10/2011, 20h02
  2. Réponses: 0
    Dernier message: 12/08/2009, 11h06
  3. Réponses: 0
    Dernier message: 12/08/2009, 11h06

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