Я создаю приложение, которое «ловит» все уведомления в течение определенного периода времени, а затем отображает их все одновременно. Однако у меня возникла проблема с моим классом NotificationListenerService Java.
В настоящее время я могу "поймать" уведомления, когда они приходят, и не отображать их. Я также могу сохранить информацию уведомления в ArrayLists (как вы можете видеть в методе onNotificationPosted). Однако, когда я пытаюсь использовать один из методов получения ArrayList для переноса информации в другой класс, ArrayList полностью пуст. Любые мысли о том, почему это так и почему я не могу получить эту информацию в другом Java классе?
NotificationListenerService Class
public class NotificationListenerServiceUsage extends NotificationListenerService {
private static final String TAG = "NotificationListenerSer";
ArrayList<Integer> idMap = new ArrayList<>();
ArrayList<Notification> notificationMap = new ArrayList<>();
@Override
public IBinder onBind(Intent intent) {
Log.d(TAG, "onBind: ");
return super.onBind(intent);
}
@Override
public void onNotificationPosted(StatusBarNotification sbn){
Integer notificationInt = sbn.getId();
Notification notificationContent = sbn.getNotification();
idMap.add(notificationInt);
notificationMap.add(notificationContent);
cancelAllNotifications();
}
@Override
public void onNotificationRemoved(StatusBarNotification sbn){
}
public ArrayList<Integer> getIdMap() {
return idMap;
}
public ArrayList<Notification> getNotificationMap() {
return notificationMap;
}
}
Реализация Класс
public class Batch_Notifications extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
public void getHeldNotifications(View view){
NotificationListenerServiceUsage noteListenerService = new NotificationListenerServiceUsage();
ArrayList<Integer> idMap = noteListenerService.getIdMap();
ArrayList<Notification> notificationMap = noteListenerService.getNotificationMap();
Log.d(TAG, "getHeldNotifications: " + idMap + notificationMap);
}
}