Autore Topic: Activity invocata da Widget  (Letto 1653 volte)

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Activity invocata da Widget
« il: 20 Ottobre 2010, 09:30:16 CEST »
0
ciao, ragazzi.
Smanettando con le AppWidget, mi sono trovato nella necessità di richiamare un'activity nel momento in cui clicco sul widget.
Fino a qui, tutto bene.
Il mio problema nasce quando devo passare il widgetId nell'intent che associo al pendingIntent dell'Activity:

Codice (Java): [Seleziona]
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        final int N = appWidgetIds.length;

        for (int i=0; i<N; i++) {
            int appWidgetId = appWidgetIds[i];

            Intent intent = new Intent(context, MiaActivity.class);
            intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);

            PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);

            RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.appwidget_layout);
            views.setOnClickPendingIntent(R.id.button, pendingIntent);

            appWidgetManager.updateAppWidget(appWidgetId, views);
        }
    }

Passando AppWidgetManager.EXTRA_APPWIDGET_ID, nell'intent in realtà non c'è nessun extra, per cui dall'activity non riesco a sapere l'id del widget chiamante.

Qualche idea in merito?
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Activity invocata da Widget
« Risposta #1 il: 20 Ottobre 2010, 10:28:32 CEST »
0
Quello che hai scritto è esatto.

Ho avuto lo stesso preciso identico problema anche io ieri (da una notification, non da un appwidget ma sempre utilizzando un PendingIntent). Come ho risolto???


NON LO SO!  o_O


Dopo un paio di smanettate (cambiavo il nome della variabile di salvataggio, nel tuo caso AppWidgetManager.EXTRA_APPWIDGET_ID per fare dei test)  ha iniziato a funzionare!
Il fatto che sia capitato anche a te mi fa pensare che sia un bug dell'emulatore!

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Activity invocata da Widget
« Risposta #2 il: 20 Ottobre 2010, 10:38:28 CEST »
0
^_^

ma io non sto usando l'emulatore, sto provando direttamente sul telefono....:/

nel logcat noto come l'intent sia assolutamente privo di extras.

ho provato pure a passare una serie di parametri differenti, ma niente.....

bella storia.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Activity invocata da Widget
« Risposta #3 il: 20 Ottobre 2010, 10:40:17 CEST »
0
ma io non sto usando l'emulatore, sto provando direttamente sul telefono....:/

Allora è un bug di android!  >:(

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Activity invocata da Widget
« Risposta #4 il: 20 Ottobre 2010, 17:58:24 CEST »
0
Ho dovuto riavviare il telefono perché mi era morto (non dava segnali di vita :/), ed ho scoperto che adesso nell'intent passa l'extras correttamente....:/

Il widget l'ho tenuto così com'era nel telefono....

^_^
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Activity invocata da Widget
« Risposta #5 il: 20 Ottobre 2010, 18:05:26 CEST »
0
 >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:(
Allora è un bug di android!
 >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:(

Offline alepio

  • Utente normale
  • ***
  • Post: 163
  • Respect: +3
    • Google+
    • 107850838
    • Mostra profilo
  • Dispositivo Android:
    SAMSUNG ACE
  • Play Store ID:
    Alessandro Piola
  • Sistema operativo:
    WIN 7
Re:Activity invocata da Widget
« Risposta #6 il: 21 Ottobre 2010, 10:28:58 CEST »
0
Ciao,
non me la cavo come voi e forse dirò una cazz... ma anche io ho avuto lo stesso problema.
e l'ho risolto così.

In fase di inserimento Widget mi salvo l'id in una sharedpreference.
e poi utilizzo il valore quando ne ho bisogno.

e sfrutto l'occasione per farvi una domanda.
A me capita che in alcuni casi il widget non risponde al click e non capisco nemmeno quando.
Succede al mattino quando accendo il telefono. faccio click sopra e non risponde.
Se lo tolgo e rimetto tutto va.
Qualche idea?
« Ultima modifica: 21 Ottobre 2010, 10:31:23 CEST da alepio »
-----------------------------------------------------
Con RISPARMIO BATTERIA - Battery Saver puoi anche dimenticarti a casa il carica batteria. Inoltre con gli EXTRAS puoi configurare la navigazione e disattivare i banner pubblicitari. Battery Saver controlla in automatico lo stato dello schermo.Se è spento disattiva WIFI e NAVIGAZIONE MOBILE, per poi riaccenderle a schermo attivo.
[APP] BatterySaver - Android Developers Italia
--------

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Activity invocata da Widget
« Risposta #7 il: 21 Ottobre 2010, 10:59:41 CEST »
0
ciao, Alepio.
Non dici una ca#?ata, perché la tua è una soluzione, atta ad aggirare il problema.
Noi parlavamo dello specifico caso, visto che Android mette a disposizione questo meccanismo per passare dati tra il chiamante e il chiamato.

Stamattina anche io ho notato che non rispondeva al click, ma dopo che ha agganciato la rete gsm e il traffico dati, ha ripreso a funzionare.

Comunque, ha un comportamento anomalo.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline alepio

  • Utente normale
  • ***
  • Post: 163
  • Respect: +3
    • Google+
    • 107850838
    • Mostra profilo
  • Dispositivo Android:
    SAMSUNG ACE
  • Play Store ID:
    Alessandro Piola
  • Sistema operativo:
    WIN 7
Re:Activity invocata da Widget
« Risposta #8 il: 21 Ottobre 2010, 11:06:11 CEST »
0
Stamattina anche io ho notato che non rispondeva al click, ma dopo che ha agganciato la rete gsm e il traffico dati, ha ripreso a funzionare.
Comunque, ha un comportamento anomalo.
quella del click è una cosa che mi fa impazzire. Il traffico da me è sempre attivo e non capisco il come mai.
Poi noto anche che la cosa si sistema, mannaggia...
-----------------------------------------------------
Con RISPARMIO BATTERIA - Battery Saver puoi anche dimenticarti a casa il carica batteria. Inoltre con gli EXTRAS puoi configurare la navigazione e disattivare i banner pubblicitari. Battery Saver controlla in automatico lo stato dello schermo.Se è spento disattiva WIFI e NAVIGAZIONE MOBILE, per poi riaccenderle a schermo attivo.
[APP] BatterySaver - Android Developers Italia
--------

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Activity invocata da Widget
« Risposta #9 il: 21 Ottobre 2010, 12:30:50 CEST »
0
Anche da me il traffico è sempre attivo, solo che la notte lo metto in modalità offline (aereo), quindi la mattina si riconnette.

mah!
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/