widget putextra application getextra ne fonctionne qu'une fois
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:
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:
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:
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