Я пытаюсь прочитать уведомления для приложений чата из моего приложения.
Я правильно реализовал NotificationListenerService
.Он дает мне журналы уведомлений почти для всех приложений для обмена мгновенными сообщениями (Whatsapp, Line, Hike, Viber, Instagram, Facebook Lite, даже почты Gmail).Но по какой-то причине onNotificationPosted
не запускается, когда я получаю уведомление о новом сообщении в Hangouts .
Вот соответствующий код моего файла службы и манифеста:
.
.
public TrackMyNotificationsService() {
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
IBinder mIBinder = super.onBind(intent);
Log.i(TAG, "onBind");
return mIBinder;
}
@Override
public void onNotificationPosted(StatusBarNotification sbn) {
super.onNotificationPosted(sbn);
if (sbn != null) {
Bundle extras = sbn.getNotification().extras;
String key = sbn.getKey();
String appName = getAppName(sbn.getPackageName());
//Here goes logic for saving and logging based on application name
.....
}
}
@Override
public boolean onUnbind(Intent intent) {
Log.i(TAG, "onUnBind");
return super.onUnbind(intent);
}
@Override
public void onNotificationRemoved(StatusBarNotification sbn) {
super.onNotificationRemoved(sbn);
}
public String getAppName(String packageName){
String appName = packageName;
try{
ApplicationInfo applicationInfo = getPackageManager().getApplicationInfo(packageName, PackageManager.GET_META_DATA);
appName = (String) getPackageManager().getApplicationLabel(applicationInfo);
}catch(Exception e){
e.printStackTrace();
}
return appName;
}
Манифест:
<service
android:name=".TrackMyNotificationsService"
android:enabled="true"
android:exported="true"
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
<intent-filter>
<action android:name="android.service.notification.NotificationListenerService" />
</intent-filter>
</service>
Я попытался перезагрузить устройство.Уведомления включены для видеовстреч.(Я получаю их в устройстве), но onNotificationPosted
не вызывается.Любая помощь?