2015-09-14 4 views
3

Я реализовал NotificationListenerService, но он не работает. Вот служба:Почему моя служба NotificationListenerService не работает?

public class NotificationListener extends NotificationListenerService { 

@Override 
public void onCreate() { 
    Log.d("MYAPP", "Created"); 
} 

@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 

@Override 
public void onNotificationPosted(StatusBarNotification sbn) { 
    Log.d("MYAPP", "Notification"); 
} 

} 

Я реализовал это в моем файле манифеста:

<service android:name="com.rodrigopontes.whatsappbubbles.NotificationListener" 
     android:label="Test" 
     android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE" > 
    <intent-filter> 
     <action android:name="android.service.notification.NotificationListenerService" /> 
    </intent-filter> 
</service> 

Это как я инициализировать его из моего MainActivity:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main_activity); 
    startService(new Intent(this, NotificationListener.class)); 
} 

Спасибо за помощь !

+0

Все еще не работает. Я получаю сообщение «Создано», но не более того. Я также включил мой сервис для чтения уведомлений в настройках безопасности. – RoDeLoPo

+0

Попробуйте выполнить [этот пример кода] (http://www.javacodegeeks.com/2013/10/android-notificationlistenerservice-example.html) - вы пропустили реализацию некоторых частей, таких как создание экземпляра NotificationListener и регистрация Это. – alfasin

+0

Я думаю, что это лучший ответ iv видел: [http://stackoverflow.com/a/37081128/1703871](http://stackoverflow.com/a/37081128/1703871) – motis10

ответ

6

После многих потраченных впустую часов я нашел ответ для этого. Это проблема с Android см. here Добро пожаловать в Android :)

+0

Да, это все еще кажется чешуйчатым , – RyPope

-1

Причина, по которой этот код не работает, - это ваш метод onBind.

Попробуйте это:

@Override 
public IBinder onBind(Intent intent) { 
    return super.onBind(intent); 
} 
0

Некоторые комментарии здесь упоминаются и другие решения, некоторые из которых привели меня к этому:

https://gist.github.com/xinghui/b2ddd8cffe55c4b62f5d8846d5545bf9

Проблема заключается в том, если я правильно понимаю, что сервисный процесс запущен, но полностью отключен от всего, что угодно.

Суть - это класс обслуживания, который проверяет, действительно ли ваш процесс NotificationListenerService работает и «подключен» к тому, что заботится о уведомлениях внутри ОС, а если нет, перезагружает его (или, вернее, включает компонент, начиная с это обычный способ - это именно то, что сломано).

Я пробовал это решение на Android 7.1.1, где мне не удалось использовать NotificationListenerService, и он сработал.

Смежные вопросы