Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
AlexRu18
5 / 5 / 3
Регистрация: 29.01.2015
Сообщений: 189
1

Управление уведомлениями

02.11.2017, 23:23. Просмотров 347. Ответов 0
Метки нет (Все метки)

Доброго времени суток. Разбираюсь в работе с уведомлениями в шторке.
На данном этапе я могу их создать, но не могу очистить или просто создать список всех активных уведомлений.
Код взят с примера и будет полностью переработан, но я не понимаю что я делаю не так.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package com.alexsprod.musicstatus;
 
import android.app.NotificationManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.v4.app.NotificationCompat;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
 
public class MusicStatus extends AppCompatActivity {
 
    private TextView txtView;
    private NotificationReceiver nReceiver;
    private static final String TAG = "MusicStatus";
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_music_status);
        txtView = (TextView) findViewById(R.id.textView);
        nReceiver = new NotificationReceiver();
        IntentFilter filter = new IntentFilter();
        filter.addAction("com.alexsprod.musicstatus.NOTIFICATION_LISTENER_EXAMPLE");
        registerReceiver(nReceiver, filter);
    }
 
    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(nReceiver);
    }
 
    public void buttonClicked(View v) {
 
        if (v.getId() == R.id.btnCreateNotify) {
            NotificationManager nManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
            NotificationCompat.Builder ncomp = new NotificationCompat.Builder(this);
            ncomp.setContentTitle("My Notification");
            ncomp.setContentText("Notification Listener Service Example");
            ncomp.setTicker("Notification Listener Service Example");
            ncomp.setSmallIcon(R.mipmap.ic_launcher);
            ncomp.setAutoCancel(true);
            nManager.notify((int) System.currentTimeMillis(), ncomp.build());
        } else if (v.getId() == R.id.btnClearNotify) {
            Intent i = new Intent("com.alexsprod.musicstatus.NOTIFICATION_LISTENER_SERVICE_EXAMPLE");
            //Log.i(TAG, "ClearNotify was clicked");
            i.putExtra("command", "clearall");
            sendBroadcast(i);
        } else if (v.getId() == R.id.btnListNotify) {
            Intent i = new Intent("com.alexsprod.musicstatus.NOTIFICATION_LISTENER_SERVICE_EXAMPLE");
            i.putExtra("command", "list");
            Log.i(TAG, "ListNotify was clicked: "+i.toString());
            sendBroadcast(i);
        }
    }
 
    class NotificationReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            String temp = intent.getStringExtra("notification_event") + "\n" + txtView.getText();
            txtView.setText(temp);
        }
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package com.alexsprod.musicstatus;
 
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.service.notification.NotificationListenerService;
import android.service.notification.StatusBarNotification;
import android.util.Log;
 
public class MusicService extends NotificationListenerService {
 
    private String TAG = this.getClass().getSimpleName();
    private MusicServiceReceiver nlservicereciver;
 
    @Override
    public void onCreate() {
        super.onCreate();
        nlservicereciver = new MusicServiceReceiver();
        IntentFilter filter = new IntentFilter();
        filter.addAction("com.alexsprod.musicstatus.NOTIFICATION_LISTENER_SERVICE_EXAMPLE");
        registerReceiver(nlservicereciver, filter);
    }
 
    @Override
    public void onDestroy() {
        super.onDestroy();
        unregisterReceiver(nlservicereciver);
    }
 
    @Override
    public void onNotificationPosted(StatusBarNotification sbn) {
 
        Log.i(TAG, "**********  onNotificationPosted");
        Log.i(TAG, "ID :" + sbn.getId() + "\t" + sbn.getNotification().tickerText + "\t" + sbn.getPackageName());
        Intent i = new Intent("com.alexsprod.musicstatus.NOTIFICATION_LISTENER_EXAMPLE");
        i.putExtra("notification_event", "onNotificationPosted :" + sbn.getPackageName() + "\n");
        Log.i(TAG, "When notification was posted ");
        sendBroadcast(i);
    }
 
    @Override
    public void onNotificationRemoved(StatusBarNotification sbn) {
        Log.i(TAG, "********** onNOtificationRemoved");
        Log.i(TAG, "ID :" + sbn.getId() + "\t" + sbn.getNotification().tickerText + "\t" + sbn.getPackageName());
        Intent i = new Intent("com.alexsprod.musicstatus.NOTIFICATION_LISTENER_EXAMPLE");
        i.putExtra("notification_event", "onNotificationRemoved :" + sbn.getPackageName() + "\n");
 
        sendBroadcast(i);
    }
 
    class MusicServiceReceiver extends BroadcastReceiver {
 
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.i(TAG, "onReceive Service");
            if (intent.getStringExtra("command").equals("clearall")) {
                MusicService.this.cancelAllNotifications();
            } else if (intent.getStringExtra("command").equals("list")) {
                //Если получена команда 'вывести список' от кнопки
                Log.i(TAG, "List command was given");
                Intent i1 = new Intent("com.alexsprod.musicstatus.NOTIFICATION_LISTENER_EXAMPLE");
                i1.putExtra("notification_event", "=====================");
                sendBroadcast(i1);
                int i = 1;
                for (StatusBarNotification sbn : MusicService.this.getActiveNotifications()) {
                    Log.i(TAG, "GETACTIVENOTIFICATIONS");
                    Intent i2 = new Intent("com.alexsprod.musicstatus.NOTIFICATION_LISTENER_EXAMPLE");
                    i2.putExtra("notification_event", i + " " + sbn.getPackageName() + "\n");
                    sendBroadcast(i2);
                    i++;
                }
                Intent i3 = new Intent("com.alexsprod.musicstatus.NOTIFICATION_LISTENER_EXAMPLE");
                i3.putExtra("notification_event", "===== Notification List ====");
                sendBroadcast(i3);
 
            }
 
        }
    }
 
}
Добавлено через 23 часа 40 минут
Разобрался.
В onCreate() надо было отправить в настройки, чтобы разрешить доступ к уведомлениям -_-
Java
1
2
 Intent intent=new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS");
        startActivity(intent);
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2017, 23:23
Ответы с готовыми решениями:

Работа с уведомлениями
Здравствуйте! Проблема в следующем: я создаю приложение для андройда, в которое иногда создает...

Service с push уведомлениями
Здравствуйте. Возникла необходимость выводить push уведомления о сообщениях пользователя на сайте....

Отправка писем с уведомлениями
Никто не знает бесплатный компонент, чтобы можно было отправлять письма с уведомлениями, или...

Какая-то беда с уведомлениями...
Не так давно злые администраторы нашей компании закрыли доступ из локальной сети во внешний мир по...

Написание телеграм бота с уведомлениями о результатах ЕГЭ
Всем привет. Хочу написать телеграм бота, который будет уведомлять о появлении результатов ЕГЭ ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2017, 23:23

"Переписка" с уведомлениями для пользователей сайта
Добрый день, замучался искать если честно в гугле - ничего не нащёл. и так перейду к делу - пишу...

Реализовать алгоритм работы планировщика. Управление виртуальной памятью. Управление файловой системой
Разработка программы менеджера памяти. Свопинг. Сегментная схема организации памяти. Управление...

Движение, вращение, управление движением, управление вращением фигуры
Написать программу, выполняющую четыре операции над графическим...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru