Autore Topic: Notification e Intent  (Letto 843 volte)

Offline Valeboccaccio

  • Utente junior
  • **
  • Post: 75
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    SGSII
  • Sistema operativo:
    Windows 7
Notification e Intent
« il: 28 Gennaio 2013, 11:55:16 CET »
0
Salve ragazzi ho un passaggio di dati tra un service e un activity che mostra tali dati in una listview, infatti dentro il service effettuo una query sul db e mando una notifica alla status bar, al click sulla notifica avviene il passaggi di dati e si apre l'activity che mostra la listview contentente i dati.
Il problema è che ciò avviene solo la prima volta, e le successive volte nonostante il passaggio dei dati nel service penso sia corretto, nell'activity che mostra i risultati arriva sempre i risultati della prima volta e non i nuovi risultati.
Ecco il codice:

Questo è il notification con passaggio di dati nel service, tale codice passa i dati correttamente solo la prima volta.
Codice (Java): [Seleziona]
String ns = Context.NOTIFICATION_SERVICE;
                                                                mNotificationManager = (NotificationManager) getSystemService(ns);
                                                               
                                                                int icon = android.R.drawable.stat_notify_chat;
                                                                CharSequence tickerText = "La toolbar di Coupapps ha trovato nuovi sconti";
                                                                long when = System.currentTimeMillis();
                                                                Notification notification = new Notification(icon, tickerText, when);
                                                               
                                                                Context context = getApplicationContext();
                                                                CharSequence contentTitle = "Coupapps Toolbar";
                                                                CharSequence contentText = "Sconti disponibili per " + name;
                                                               
                                                               
                                                               
                                                                Intent intent = new Intent(getApplicationContext(), Activity3.class);
                                                                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                                                                String pkg=getPackageName();
                                                               
                                                                //inseriamo i dati nell'intent  
                                                 intent.putStringArrayListExtra(pkg+".Domain", (ArrayList<String>) Taga);
                                                 intent.putStringArrayListExtra(pkg+".Program", (ArrayList<String>) Tagb);
                                                 intent.putStringArrayListExtra(pkg+".End_Date", (ArrayList<String>) Tagd);
                                                 intent.putStringArrayListExtra(pkg+".Percentage", (ArrayList<String>) Tage);
                                                 intent.putStringArrayListExtra(pkg+".Discount", (ArrayList<String>) Tagf);
                                                 intent.putStringArrayListExtra(pkg+".Link", (ArrayList<String>) Tagg);
                                                 intent.putExtra(pkg+".Host", name);
                                                 
                                                 Log.d(getClass().getName(), "valuehost1 = " +  intent.putExtra(pkg+".Host", name));
                                                 
                                                 
                                                 
                                                 
                                                               
                                                                PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0);
                                                                notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
                                                               
                                                               
                                                                notification.defaults |= Notification.DEFAULT_SOUND;    //Suona
                                                                notification.defaults |= Notification.DEFAULT_LIGHTS;   //LED
                                                               


                                                                mNotificationManager.notify(NOTIFICATION_ID, notification);
                                                        }

e questo è il codice che riceve i dati nell'activity:

Codice (Java): [Seleziona]
final String pkg=getPackageName();

       
        DomainArray.addAll(intent.getStringArrayListExtra(pkg+".Domain"));
        ProgramArray.addAll(intent.getStringArrayListExtra(pkg+".Program"));
        End_DateArray.addAll (intent.getStringArrayListExtra(pkg+".End_Date"));
        PercentageArray.addAll (intent.getStringArrayListExtra(pkg+".Percentage"));
        DiscountArray.addAll (intent.getStringArrayListExtra(pkg+".Discount"));
        LinkArray.addAll (intent.getStringArrayListExtra(pkg+".Link"));
        String Host = intent.getStringExtra(pkg+".Host");
       
        Log.d(getClass().getName(), "valuehost2 = " + intent.getStringExtra(pkg+".Host"));
       

La prima volta che eseguo l'app, il Log nel service e il Log nell'activity sono corrispondenti, dopodichè il log nell'activity risulta sempre essere lo stesso, cioè quello della prima volta.
Grazie  :-)
Domani Smetto.

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:Notification e Intent
« Risposta #1 il: 28 Gennaio 2013, 12:34:23 CET »
0
Io alla cieca proverei ad aggiungere anche il flag PendingIntent.FLAG_UPDATE_CURRENT

Offline Valeboccaccio

  • Utente junior
  • **
  • Post: 75
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    SGSII
  • Sistema operativo:
    Windows 7
Re:Notification e Intent
« Risposta #2 il: 28 Gennaio 2013, 14:17:53 CET »
0
Ho risolto utilizzando:
Codice (Java): [Seleziona]
Bundle extras = getIntent().getExtras();
e putStringArrayListExtra.
« Ultima modifica: 29 Gennaio 2013, 15:05:15 CET da Valeboccaccio »
Domani Smetto.