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
Partager