Bonjour,

J'ai un widget qui peut lancer une application en lui passant des paramètres

typiquement je met 3 fois le même widget sur ma page d'accueil avec 3 paramètres différent, par exemple A B et C

Quand je clique sur mon premier widget A, l'application s'ouvre et reçoit bien le paramètre A
Par contre si je clique sur le widget B, l'application bascule en premier plan mais ne reçoit pas le paramètre B

Je pense savoir pourquoi, mais je n'arrive pas à trouver de solution de contournement :

dans mon widget j'ai le code suivant (mon paramètre est system_to_show):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
   Intent intentAppli = new Intent(Intent.ACTION_MAIN);
        intentAppli.addCategory(Intent.CATEGORY_LAUNCHER);
        intentAppli.putExtra("system_to_show", system);
        intentAppli.setClassName("com.santeos.meteoSanteos", "com.santeos.meteoSanteos.MainActivity");
        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intentAppli, PendingIntent.FLAG_UPDATE_CURRENT);
 
        views.setOnClickPendingIntent(R.id.id_projet, pendingIntent);


dans mon appli sur le onCreate

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
 Bundle extras = getIntent().getExtras();
        if(extras == null) {
            systemToShow= null;
        } else {
            systemToShow= extras.getString("system_to_show");
        }
 
        if(systemToShow!=null)
        {
            //TODO here get the string stored in the string variable and do
            // setText() on userName
 
            Toast.makeText(MainActivity.this,systemToShow, Toast.LENGTH_LONG).show();
            baseUrl=baseUrl+"&toshow="+systemToShow;
        }


a ce stade je comprend bien que cela ne fonctionnera que sur la création de l'application, pas de soucis


Du coup j'ai essayé de déplacer ce code dans le onResume

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
 @Override
    protected void onResume() {
        super.onResume();
        String systemToShow;
        Bundle extras = getIntent().getExtras();
        if(extras == null) {
            systemToShow= null;
        } else {
            systemToShow= extras.getString("system_to_show");
        }
 
        if(systemToShow!=null)
        {
            //TODO here get the string stored in the string variable and do
            // setText() on userName
 
            Toast.makeText(MainActivity.this,systemToShow, Toast.LENGTH_LONG).show();
            baseUrl=baseUrl+"&toshow="+systemToShow;
        }
    }

mais là aussi cela fonctionne la première fois, si j'ouvre l'application à partir d'un widget, mais pas les fois d'aprés (tant que l'appli est ouverte)



Je suis preneur de toutes idées !!!!
merci

Laurent