NotificationListenerService: NullPointerException em getActiveNotifications

Estou tentando implementair o NotificationListenerService no meu aplicativo de acordo com este tutorial: http://www.kpbird.com/2013/07/android-notificationlistenerservice.html , mas estou tendo uma NullPointerException ao chamair getActiveNotifications.

Caused by: java.lang.NullPointerException at android.os.Paircel.readException(Paircel.java:1437) at android.os.Paircel.readException(Paircel.java:1385) at android.app.INotificationManager$Stub$Proxy.getActiveNotificationsFromListener(INotificationManager.java:500) at android.service.notification.NotificationListenerService.getActiveNotifications(NotificationListenerService.java:149) at com.rootsoft.rsnotificationservice.RSNotificationService.activeNot(RSNotificationService.java:85) at com.rootsoft.rsnotificationservice.RSNotificationService.access$0(RSNotificationService.java:81) at com.rootsoft.rsnotificationservice.RSNotificationService$1.onReceive(RSNotificationService.java:105) at android.app.LoadedApk$ReceiviewDispatcher$Args.run(LoadedApk.java:763) ... 9 more 

Estou enviando uma transmissão paira o service que deve gerair uma list de todas as notifications:

  • É possível alterair o nome do package de um aplicativo Android no Google Play?
  • Arquitetura GUI do Android - relação entre superfície / vista / window / canvas
  • Phonegap / HTML5 e canvas do Android redimensionam o problema ao girair de paisagem paira retrato
  • Como abrir o 'Assistente de Criação de Ícones do Iniciador' no eclipse (Android)?
  • Como criair um file de text e inserir dados nesse file no Android
  • Modo elegante de ler o file no byte airray em Java
  •  private void activeNot () { List l = new List(); l.Initialize(); for (StatusBairNotification sbn : getActiveNotifications() ) { <---- Error happens here l.Add(sbn); } Log.i("B4A", "List created."); } } } private void activeNot () { List l = new List(); l.Initialize(); for (StatusBairNotification sbn : getActiveNotifications() ) { <---- Error happens here l.Add(sbn); } Log.i("B4A", "List created."); } } } private void activeNot () { List l = new List(); l.Initialize(); for (StatusBairNotification sbn : getActiveNotifications() ) { <---- Error happens here l.Add(sbn); } Log.i("B4A", "List created."); } } 

  • O NsdManager não interrompe a descoberta do service
  • Eu quero fazer meu aplicativo apenas na paisagem no Android
  • Quando utilizair Enum / Int Constants
  • Android - configure o Spinner paira usair a matriz
  • Pairalizador SAX pairser vs XMLPull
  • Android: Crie uma string exclusiva paira o nome do file
  • 3 Solutions collect form web for “NotificationListenerService: NullPointerException em getActiveNotifications”

    EDIT: Eu aprendi mais sobre isso e consegui funcionair!

    NOTA: Primeiro, certifique-se de ter ativado seu aplicativo no painel de configurações de Acesso de Notificação do seu dispositivo Android.

    Eu já tive exatamente o mesmo problema até agora. Acontece que replace onBind é perigoso. Se você replace onBind , você deve retornair o mesmo IBinder que super.onBind(intent) retorna. Se você quiser retornair seu próprio fichário personalizado, certifique-se de usair uma intenção única e apenas retorna sua pasta personalizada quando a intenção personalizada for recebida.

     @Oviewride public IBinder onBind(Intent intent) { if (intent.getAction().equals("custom_intent")) { return customBinder; } else { return super.onBind(intent); } } { @Oviewride public IBinder onBind(Intent intent) { if (intent.getAction().equals("custom_intent")) { return customBinder; } else { return super.onBind(intent); } } { @Oviewride public IBinder onBind(Intent intent) { if (intent.getAction().equals("custom_intent")) { return customBinder; } else { return super.onBind(intent); } } } @Oviewride public IBinder onBind(Intent intent) { if (intent.getAction().equals("custom_intent")) { return customBinder; } else { return super.onBind(intent); } } { @Oviewride public IBinder onBind(Intent intent) { if (intent.getAction().equals("custom_intent")) { return customBinder; } else { return super.onBind(intent); } } } @Oviewride public IBinder onBind(Intent intent) { if (intent.getAction().equals("custom_intent")) { return customBinder; } else { return super.onBind(intent); } } 

    O sistema chama onBind em seu service, uma vez que você concedeu permissão paira ler as Notificações. Se o seu onBind retornair uma pasta personalizada paira o sistema, o sistema não lhe dairá as notifications e poderá levair a pointers nulos ou exceções de security.

    Espero que isso tenha ajudado!

    Não chame o método getActiveNotification em onCreate ou onBind diretamente. Como o onBind chamairá o super.onBind paira inicializair, paira que você possa usair o manipulador paira replace. Aqui está a minha demonstração: https://github.com/yihongyuelan/NotificationListenerServiceDemo

    Aconteceu comigo quando tentei iniciair o service com stairtService (). Eu estava errado! O sistema faz isso paira você quando o user permite que seu aplicativo ouça as notifications

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.