Autore Topic: onBoot???  (Letto 1313 volte)

Offline salvatore.zagarella

  • Utente normale
  • ***
  • Post: 239
  • Respect: +2
    • Mostra profilo
    • Ieeng Solution
onBoot???
« il: 01 Giugno 2012, 10:51:33 CEST »
0
Salve ragazzi,
avrei bisogno di un consiglio da parte vostra..
Ho realizzato una sveglia sul mio cell e fin qui tutto ok.. Il problema è che quando spengo e riaccendo il cellulare (può capitare), perdo tutti i PendingIntent che avevo settato in precedenza..
Come faccio a far settare nuovamente gli intent alla mia applicazione all'accensione del cellulare??


Grazie..

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:onBoot???
« Risposta #1 il: 01 Giugno 2012, 10:55:01 CEST »
+1
Registra un BroadcastReceiver sul BOOT_COMPLETED (attenzione ad aggiungere anche il relativo permesso), e nell'onReceive implementa la logica di recupero/riattivazione.
O, ancora meglio, nell'onReceive lancia un Service che si occupa del recupero/riattivazione, visto che un BroadcastReceiver dovrebbe essere il più veloce possibile per non essere bloccante/andare in ANR.

Offline salvatore.zagarella

  • Utente normale
  • ***
  • Post: 239
  • Respect: +2
    • Mostra profilo
    • Ieeng Solution
Re:onBoot???
« Risposta #2 il: 01 Giugno 2012, 12:27:33 CEST »
0
Ottimo..
A chi dovesse avete ancora dubbi ecco il codice.

Inserire nel Manifest della vostra applicazione il seguente frammento di codice
Codice (XML): [Seleziona]
<receiver android:name=".OnBootReceiver">
    <intent-filter >
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
    </intent-filter>
</receiver>

A questo punto create il file OnBootReceiver.java, che verrà eseguito quando l'evento BOOT_COMPLETED sarà scattato, con il seguente codice
Codice (Java): [Seleziona]
public class OnBootReceiver extends BroadcastReceiver{
        @Override
        public void onReceive(Context context, Intent intent) {
                Log.i("boot", "COMPLETED");            
        }
}

Ecco qui che all'accensione il sistema eseguirà il file OnBootReceiver.java.

 8-)

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:onBoot???
« Risposta #3 il: 01 Giugno 2012, 12:30:17 CEST »
+1
Bisogna anche ricordarsi di aggiungere il permesso:
Codice (Java): [Seleziona]
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

Offline salvatore.zagarella

  • Utente normale
  • ***
  • Post: 239
  • Respect: +2
    • Mostra profilo
    • Ieeng Solution
Re:onBoot???
« Risposta #4 il: 08 Giugno 2012, 10:52:33 CEST »
0
Ragazzi,
inserendo le istruzioni sul simulatore funziona tutto bene ma quando scarico l'apk sul galaxy S2 non funziona il boot receiver...
qualcuno ha avuto lo stesso problema??


Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:onBoot???
« Risposta #5 il: 08 Giugno 2012, 10:56:03 CEST »
0
Ragazzi,
inserendo le istruzioni sul simulatore funziona tutto bene ma quando scarico l'apk sul galaxy S2 non funziona il boot receiver...
qualcuno ha avuto lo stesso problema??

Da cosa deduci che non funziona il boot receiver?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline salvatore.zagarella

  • Utente normale
  • ***
  • Post: 239
  • Respect: +2
    • Mostra profilo
    • Ieeng Solution
Re:onBoot???
« Risposta #6 il: 08 Giugno 2012, 10:58:25 CEST »
0
Perchè ho inserito nella classe OnBoot che estende il BroadcastReceiver un Log.i e non mi stampa nulla e non viene messa neanche la notifica sulla barra,
cosa che fa sull'emulatore..

Forse dipende dalla versione del SO del galaxy? 4.0.3

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:onBoot???
« Risposta #7 il: 08 Giugno 2012, 11:51:55 CEST »
0
Perchè ho inserito nella classe OnBoot che estende il BroadcastReceiver un Log.i e non mi stampa nulla e non viene messa neanche la notifica sulla barra,
cosa che fa sull'emulatore..

Forse dipende dalla versione del SO del galaxy? 4.0.3

Per usare il LogCat sul device fisico, hai messo android:debuggable="true" nel manifest?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:onBoot???
« Risposta #8 il: 08 Giugno 2012, 11:52:38 CEST »
0
Per caso hai spostato l'app sulla SD?

Offline salvatore.zagarella

  • Utente normale
  • ***
  • Post: 239
  • Respect: +2
    • Mostra profilo
    • Ieeng Solution
Re:onBoot???
« Risposta #9 il: 08 Giugno 2012, 11:54:48 CEST »
0
No, quel android:debuggable="true" non l'ho mai usato nel dispositivo fisico ma mi ha sempre mostrato i vari Log..dove devo inserire tale istruzione??

Offline salvatore.zagarella

  • Utente normale
  • ***
  • Post: 239
  • Respect: +2
    • Mostra profilo
    • Ieeng Solution
Re:onBoot???
« Risposta #10 il: 08 Giugno 2012, 16:12:46 CEST »
0
ok...ho solo modificato il nome della receiver inserendo anche il package ed ora funziona.. Invece che .OnBoot, nel manifest ho inserito mio.package.test.OnBoot ed ora va..

 o_O