Autore Topic: Ottenere i dati di una notifica  (Letto 935 volte)

Offline Istorn

  • Utente junior
  • **
  • Post: 53
  • Respect: 0
    • istorn.lol
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Sistema operativo:
    Windows 7
Ottenere i dati di una notifica
« il: 08 Gennaio 2014, 15:50:59 CET »
0
Ciao a tutti! Avrei bisogno di un consiglio: supponiamo che voglia fare un'applicazione in grado di ottenere semplicemente i dati di una notifica.

Per esempio: ricevo un messaggio su Whatsapp, l'applicazione è in grado di captare (tramite ausilio di stringhe per esempio) il nome dell'applicazione da cui è arrivata la notifica (Whatsapp in questo caso), il numero o il nome del mittente e ovviamente il testo del messaggio.

Questo concetto supponete di allargarlo a qualsiasi notifica di applicazioni di messaggistica o di social networking.

Qualcuno mi sa aiutare? :)

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:Ottenere i dati di una notifica
« Risposta #1 il: 08 Gennaio 2014, 16:37:11 CET »
0
In generale non è permesso per ovvie ragioni di sicurezza (app che spiano le notifiche di altre app).

Però c'è un escamotage per i casi in cui serve davvero: l'app deve richiedere un ben preciso permesso di accessibilità e soprattutto l'utente deve volontariamente attivare l'accessibilità dal menu impostazioni.

Questo è un esempio funzionante di quello che vuoi fare:
https://github.com/ograycode/NotificationWatcher
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Istorn

  • Utente junior
  • **
  • Post: 53
  • Respect: 0
    • istorn.lol
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Sistema operativo:
    Windows 7
Re:Ottenere i dati di una notifica
« Risposta #2 il: 08 Gennaio 2014, 17:11:03 CET »
0
Bradipao ne sai sempre una più del diavolo, non saprei come fare senza di te! :D

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Ottenere i dati di una notifica
« Risposta #3 il: 08 Gennaio 2014, 17:23:18 CET »
0
In generale non è permesso per ovvie ragioni di sicurezza (app che spiano le notifiche di altre app).

Però c'è un escamotage per i casi in cui serve davvero: l'app deve richiedere un ben preciso permesso di accessibilità e soprattutto l'utente deve volontariamente attivare l'accessibilità dal menu impostazioni.
Non è completamente esatto.
Con Android 4.3 , ci sono API ufficiali , che richiedono l'autorizzazione dell'utente in ogni caso, che consentono di crearti dei listeners per le notifiche e accedere ai dati al suo interno. Con Android 4.4 le API sono state affinate permettendo di accedere ad un numero maggiori di informazioni. Ovviamente non tutti i dati sono accessibili.

Questa la pagina ufficiale.
NotificationListenerService | Android Developers

Prima di Android 4.3, l'unico modo era quello di utilizzare gli AccessibilityService
AccessibilityService | Android Developers.
La differenza è notevole.
Le autorizzazioni per i NotificationListener sono specifiche, hanno una pagina dedicata nei settings su 4.3 (su 4.4 sembra scomparsa).
Gli AccessibilityService invece consentono di prendere molte informazioni, non solo le notifiche. Io personalmente non installerei mai una app con questo tipo di permesso a meno che non sia di Google o mia.

Chiedo scusa ma non ho il tempo di riscrivere codice, ma tempo fa avevo scritto dei blog e del codice proprio per recuperare le notifiche di Whatsapp (nel caso specifico le usavo per il dashclock).

ONGOING DEV: How to write a DashClock Extension: Whatsapp Extension example  (api<4.3)
ONGOING DEV: NotificationListenerService and a Whatsapp extension for Dashclock (api 4.3)
ONGOING DEV: NotificationListenerService and kitkat (api 4.4)


Offline Istorn

  • Utente junior
  • **
  • Post: 53
  • Respect: 0
    • istorn.lol
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Sistema operativo:
    Windows 7
Re:Ottenere i dati di una notifica
« Risposta #4 il: 08 Gennaio 2014, 19:27:57 CET »
0
Grazie anche a te :D

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:Ottenere i dati di una notifica
« Risposta #5 il: 08 Gennaio 2014, 19:46:17 CET »
0
L'escamotage dell'accessibility è abbastanza diffuso. Lo usa anche LightFlow, che ha addirittura dedicato una pagina ai permessi che richiedono e alla loro spiegazione ( App permissions ).

Comunque sono d'accordo con Gabriele sul fatto che non userei mai un'app che richiede un tale accesso. Ed è ciò che mi ha fatto desistere dal cercare un'app per personalizzare il colore del led di notifica in base all'evento: per poter personalizzare il colore deve avere accesso a cosa accade.

Riguarda la pagina scomparsa dal 4.4, probabilmente Gabriele si riferisce alla famosa pagina che consentiva di dare/revocare i permessi individualmente per ciascuna app. Google ha ufficialmente dichiarato che non doveva essere resa accessibile all'utente (perchè l'utente medio può fare danni notevoli al funzionamento delle app) e quindi l'ha rimossa.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Ottenere i dati di una notifica
« Risposta #6 il: 08 Gennaio 2014, 20:15:37 CET »
0
Riguarda la pagina scomparsa dal 4.4, probabilmente Gabriele si riferisce alla famosa pagina che consentiva di dare/revocare i permessi individualmente per ciascuna app. Google ha ufficialmente dichiarato che non doveva essere resa accessibile all'utente (perchè l'utente medio può fare danni notevoli al funzionamento delle app) e quindi l'ha rimossa.
No... sono riuscito a trovarla.
Era nello stesso punto della 4.3, solo che se non ci sono autorizzazioni, la voce viene nascosta dal menu.
Quella di cui parli tu è la pagina chiamata "Ops", che permetteva di cambiare le singole autorizzazioni date in fase di installazione.