Autore Topic: Notifiche da dati inseriti in un database Sqlite  (Letto 257 volte)

Offline xwilly84

  • Nuovo arrivato
  • *
  • Post: 30
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei p9 lite
  • Play Store ID:
    Luca Chirichella
  • Sistema operativo:
    Win 8.1 x64
Notifiche da dati inseriti in un database Sqlite
« il: 06 Novembre 2017, 00:31:47 CET »
0
Salve ragazzi ho bisogno di aiuto con la gestione delle notifiche, per un'activity che registra eventi.
Il database memorizza i seguenti valori: evento, data ed orario.

Vorrei interrogare il mio database facendo partire una notifica basata sulla data e l'orario.
Un semplice notifica che ricorda all'utente l'evento.

Grazie in anticipo. :-)


Offline iClaude

  • Utente normale
  • ***
  • Post: 290
  • Respect: +22
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S8
  • Sistema operativo:
    Windows 10
Re:Notifiche da dati inseriti in un database Sqlite
« Risposta #1 il: 07 Novembre 2017, 10:15:53 CET »
+1
Puoi usare un AlarmManager collegato ad un Service/BroadcastReceiver per visualizzare la notifica.
Ovviamente devi anche gestire l'ipotesi spegnimento del dispositivo (che cancella tutti gli alarms).

Offline xwilly84

  • Nuovo arrivato
  • *
  • Post: 30
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei p9 lite
  • Play Store ID:
    Luca Chirichella
  • Sistema operativo:
    Win 8.1 x64
Re:Notifiche da dati inseriti in un database Sqlite
« Risposta #2 il: 07 Novembre 2017, 13:22:42 CET »
0
per ora riesco solo a far partire una notifica, ma non so come collegarla ad un valore associato al database.

Codice: [Seleziona]

                Intent i = new Intent(this,Dashboard.class);
                PendingIntent pi = PendingIntent.getActivity(this, 0, i, 0);

                NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
                mBuilder.setContentTitle("NotificaSubText");
                mBuilder.setContentText("NotificaHeadText");
                mBuilder.setSmallIcon(R.drawable.ic_notify);
                mBuilder.setAutoCancel(true);
                mBuilder.setContentIntent(pi);

                NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
                notificationManager.notify(0, mBuilder.build());



« Ultima modifica: 07 Novembre 2017, 13:26:33 CET da xwilly84 »

Offline iClaude

  • Utente normale
  • ***
  • Post: 290
  • Respect: +22
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S8
  • Sistema operativo:
    Windows 10
Re:Notifiche da dati inseriti in un database Sqlite
« Risposta #3 il: 08 Novembre 2017, 17:34:47 CET »
+1
Un possibile schema è questo:
- bootup BroadcastReceiver che si attiva quando viene acceso il telefono e che
fa partire
- Service che interroga il database cercando il prossimo evento e imposta un AlarmManager per quella scadenza che
fa partire
- lo stesso Service di prima che visualizza la notifica, interroga nuovamente il database e imposta l'allarme successivo

Offline xwilly84

  • Nuovo arrivato
  • *
  • Post: 30
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei p9 lite
  • Play Store ID:
    Luca Chirichella
  • Sistema operativo:
    Win 8.1 x64
Re:Notifiche da dati inseriti in un database Sqlite
« Risposta #4 il: 17 Novembre 2017, 20:10:56 CET »
0
ciao puoi gentilmente postarmi un esempio di codice.
grazie in anticipo.

Offline iClaude

  • Utente normale
  • ***
  • Post: 290
  • Respect: +22
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S8
  • Sistema operativo:
    Windows 10
Re:Notifiche da dati inseriti in un database Sqlite
« Risposta #5 il: 17 Novembre 2017, 20:20:26 CET »
+1
ciao puoi gentilmente postarmi un esempio di codice.
grazie in anticipo.

Se guardi questa repository:
https://github.com/iClaude/SoundRecorder/tree/scheduled-recorder

ho modificato un'app di registrazione vocale per prevedere delle registrazioni pianificate, e ho usato proprio questo sistema (ti potrebbero interessare le classi BootupReceiver e ScheduledRecordingService).
Nel tuo caso, se devi solo visualizzare una notifica, forse puoi gestire tutto in un unico BroadcastReceiver, usando il metodo goAsync(), come spiegato qua:
https://developer.android.com/guide/components/broadcasts.html#effects_on_process_state