Autore Topic: BrodcastReceiver ed Intent  (Letto 1617 volte)

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
BrodcastReceiver ed Intent
« il: 13 Marzo 2011, 17:38:25 CET »
0
Che voi sappiate un Brodcast può lanciare un Intent ? cioè se io da un metodo di questo tipo lanciassi un pending su un brodcast

Codice (Java): [Seleziona]
Intent intent = new Intent(startNewAlarm.ACTION_START_ALL);
PendingIntent pintent = PendingIntent.getBroadcast(context, 0, intent,PendingIntent.FLAG_CANCEL_CURRENT);
ETC ETC                        

e nel BrodcastReceiver volessi fare :
Codice (Java): [Seleziona]
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(ACTION_START_ALL)){
startPippo(context);
}
...
....

però mi dà errore....

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +203
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:BrodcastReceiver ed Intent
« Risposta #1 il: 13 Marzo 2011, 17:47:15 CET »
0

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:BrodcastReceiver ed Intent
« Risposta #2 il: 13 Marzo 2011, 17:56:28 CET »
0
Di tutti i punti indicati dove ho sbagliato ? non ho inserito il logcat dell'errore ?  :-\

Ecco l'errore
Codice (Java): [Seleziona]
Unable to start receiver it.android.mio.csb.startNewAlarm: java.lang.ClassCastException:
android.app.ReceiverRestrictedContext

e me lo dà nel metodo startPippo su questa riga :
Codice (Java): [Seleziona]
Intent i = ((Activity) context).getIntent();

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:BrodcastReceiver ed Intent
« Risposta #3 il: 13 Marzo 2011, 19:00:24 CET »
0
Ho risolto da solo.... comunque una persona può sbagliare quindi se si potesse spiegare l'errore invece che mettere semplicmente il link ai modi d'uso aiuterebbe a non risbagliare la prossima volta.

Grazie

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:BrodcastReceiver ed Intent
« Risposta #4 il: 13 Marzo 2011, 19:54:07 CET »
0
Ho risolto da solo.... comunque una persona può sbagliare quindi se si potesse spiegare l'errore invece che mettere semplicmente il link ai modi d'uso aiuterebbe a non risbagliare la prossima volta.

Grazie

Non per polemizzare ma quando si apre un topic perchè si ha un errore la cosa più importante è postare l'errore stesso. :)
E comunque tu non sei più un utente nuovo, come funzionano le cose dovresti averlo capito ;)

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:BrodcastReceiver ed Intent
« Risposta #5 il: 13 Marzo 2011, 20:29:46 CET »
0
Figurati Ricky nemmeno io volevo polemizzare, non ho posto l'erroe perchè il mio dubbio era quando ho chiesto all'inizio del topic e cioè "Che voi sappiate un Brodcast può lanciare un Intent ?" comunque buona a sapersi la prossima volta metto il logcat :)

Dato che ci troviamo vorrei chiedere : Come mai nel metodo startPippo (ma anche nell'onReceive del Brodcast)  non mi fa partire l'intent con startActivityForResult ma solo con startActvity ? cioè il ForResult non me lo ritrovo proprio in elenco....

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:BrodcastReceiver ed Intent
« Risposta #6 il: 13 Marzo 2011, 20:42:41 CET »
0
Perchè un BroadcastReceiver ha un lifecycle diverso da un'Activity.
Non puoi fare startActivityForResult perchè non è previsto che lui rimanga in attesa di ricevere il risultato.
Se vuoi spiegarci più nel dettaglio cosa vorresti fare magari possiamo aiutarti a trovare una soluzione architetturale alternativa.

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:BrodcastReceiver ed Intent
« Risposta #7 il: 13 Marzo 2011, 21:35:49 CET »
0
Bhe quello che vorrei fare è semplice, ho un AlarmManager con un PendingIntent.getBrodcast all'azione nell'onReceive del Brodcast faccio fare il wakelock del telefono ed altre cose, poi richiamo un metodo che fa partire una nuova actvity tramite uno startActivity e qui volevo usare un startActivityForResult in quanto al RESULT_OK avrei riabilitato il wakelock direttamente dal Brodcast receiver e gli avrei fatto fare altre cosucce invece ora se non posso usare startActivityForResult sono costretto a far fare tutte ste cose nell'activity lanciata...

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:BrodcastReceiver ed Intent
« Risposta #8 il: 13 Marzo 2011, 21:40:06 CET »
0
Eh temo proprio che sia l'unica soluzione.
I BR sono fatti solo per ricevere gli Intent, gestire il tutto avviando activity, services o quant'altro e terminare.
A conferma di questo tieni conto che se non termina entro 10 secondi ottieni una schermata di ANR.

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:BrodcastReceiver ed Intent
« Risposta #9 il: 13 Marzo 2011, 22:10:45 CET »
0
In effetti avevo intuito che fosse così :( vabbè grazie Ricky come sempre gentilissimo ! ;)