Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
TonyBicbaev
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 133
1

Убрать уведомление при выходе из приложения

13.09.2016, 13:37. Просмотров 924. Ответов 24
Метки нет (Все метки)

Привет, нужно удалить уведомление при закрытие приложения. как это сделать? так же на кнопку Home.
А то если выхожу из приложения, а потом перехожу по уведомлению: он подгружает пустою активность без данных.
Java
1
2
3
4
5
6
7
8
....
 NotificationManager notificationManager = (NotificationManager) context //типо создал уведомление
                .getSystemService(Context.NOTIFICATION_SERVICE);
 
        notificationManager.notify(0, builder.build());
 
        notificationManager.cancel(0); // вот так типо удалил
....
[

Добавлено через 9 минут
а все в onDestroy нужно было засунуть
Java
1
 notificationManager.cancel(0);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.09.2016, 13:37
Ответы с готовыми решениями:

Уведомление пользователя при выходе из приложения
Как лучше реализовать? т.е. при нажатии кнопки HOME(железной) или интерфейсной...

Разворачивание приложения при нажатии на уведомление
Context context = getApplicationContext(); Intent notificationIntent = new...

Остановить сервис при выходе из приложения
Начал делать сервис для приложения и сразу возник костыль. Стартую сервис в...

Автоматическое запоминание позиции при выходе из приложения
Здравствуйте. Разрабатываю приложение, в котором имеется текст с вертикальной...

Убрать уведомление из статус-бара
Чтобы убрать уведомление из статус-бара используют:...

24
vxg
Модератор
3252 / 2052 / 323
Регистрация: 13.01.2012
Сообщений: 7,945
14.09.2016, 08:16 2
TonyBicbaev, не факт что дестрой будет вызван. Тем более при нажатии хоум
0
TonyBicbaev
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 133
14.09.2016, 08:46  [ТС] 3
И как отслеживать тогда?)
0
vxg
Модератор
3252 / 2052 / 323
Регистрация: 13.01.2012
Сообщений: 7,945
14.09.2016, 09:05 4
TonyBicbaev, единственный 100% действующий способ сделать что то до того как "глаза закрылись" - это поместить код в OnPause, но я не особо понимаю что у вас за задача такая
0
TonyBicbaev
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 133
14.09.2016, 10:09  [ТС] 5
Удалить уведомление если закрыл приложение)
0
vxg
Модератор
3252 / 2052 / 323
Регистрация: 13.01.2012
Сообщений: 7,945
14.09.2016, 12:32 6
TonyBicbaev, нет такого понятия в андроид - закрыл
0
Mikalai
264 / 240 / 95
Регистрация: 11.01.2015
Сообщений: 670
14.09.2016, 15:49 7
TonyBicbaev, в onPause можно узнать приложение в процессе закрытия или просто в фон уходит при помощи метода isFinishing().
1
vxg
Модератор
3252 / 2052 / 323
Регистрация: 13.01.2012
Сообщений: 7,945
14.09.2016, 18:43 8
Mikalai, что будет если система поставила на паузу, а потом убила для того что бы освободить ресурсы без вызова OnDestroy, а потом пришила все приложение целиком?
0
Pablito
2722 / 2165 / 735
Регистрация: 12.05.2014
Сообщений: 7,572
Завершенные тесты: 1
14.09.2016, 19:16 9
тогда уведомление пропадет
0
vxg
Модератор
3252 / 2052 / 323
Регистрация: 13.01.2012
Сообщений: 7,945
15.09.2016, 06:49 10
Паблито, если бы система убирала уведомления от мертвых приложений ТС не создал бы эту тему (это я логически просто думаю)
0
Pablito
2722 / 2165 / 735
Регистрация: 12.05.2014
Сообщений: 7,572
Завершенные тесты: 1
15.09.2016, 11:57 11
тогда как вариант
1. из onCreate приложения или активити запускаем сервис, в котором в onStartCommand вытираем сообщения
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class MyService extends Service {
    public MyService() {
    }
 
    @Override
    public IBinder onBind(Intent intent) {
        throw new UnsupportedOperationException("Not yet implemented");
    }
 
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        nm.cancelAll();
        return super.onStartCommand(intent, flags, startId);
    }
}
2. с небольшой задержкой выводим нотификейшн, так что бы сервис успел стартануть
3. если "убить" приложение, например кнопкой Terminate Application в AndroidMonitor, то через 1-2 секунды сервис перезапустится и уберет оповещения
4. в onDestroy тоже оставить код, который убирает оповещения, на случай коректного завершения приложения
0
ExFau$t
565 / 510 / 114
Регистрация: 08.05.2012
Сообщений: 2,538
15.09.2016, 12:19 12
Я что-то совсем не понимаю, уведомление уже висит в шторке, зачем его удалять? Если оно не нужно зачем его надо было выводить и делать 150 костылей?
Цитата Сообщение от TonyBicbaev Посмотреть сообщение
перехожу по уведомлению: он подгружает пустою активность без данных.
Просто залить валидный интент, с валидными extra. Грубо говоря, если приложение запущено, просто переоткроется окно, если закрыто, будет запущено.
0
TonyBicbaev
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 133
15.09.2016, 12:40  [ТС] 13
ExFau$t,
Там переход, на список чатов, и диалогов, которые я получаю при подключение к серверу
Уведомление приходит если пришло сообщение.
Если я закрою приложение а уведомление висит, и потом перейду по нему оно под грузиться без данных, и вообще соединения нет.
Думаю как правильно соединение сделать тут Приём сообщений от сервера в фоне
0
ExFau$t
565 / 510 / 114
Регистрация: 08.05.2012
Сообщений: 2,538
15.09.2016, 12:51 14
TonyBicbaev, ну так подгрузи данные. И вообще если
Цитата Сообщение от TonyBicbaev Посмотреть сообщение
Уведомление приходит если пришло сообщение.
а потом ты выходишь из приложения, значит у тебя уже всё пришло, и ничего подгружать не нужно (кстати, а зачем выводить оповещение, если я нахожусь в приложении?)
0
TonyBicbaev
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 133
15.09.2016, 12:57  [ТС] 15
ExFau$t,
В смысле прям убиваю. Оно уже не работает.
Если просто сверну, то все норм. или в свернутом виде если придет то тоже все норм открывается.
Оповещающие должно открывать нужный чат. (а про то что в приложение, это не мои причуды.)
Цитата Сообщение от ExFau$t Посмотреть сообщение
а потом ты выходишь из приложения, значит у тебя уже всё пришло, и ничего подгружать не нужно
А насчет подгружать, нужно сервис грамотный написать, над чем и работаю.
0
ExFau$t
565 / 510 / 114
Регистрация: 08.05.2012
Сообщений: 2,538
15.09.2016, 13:04 16
Ну и открывай нужный чат, ты же в приложении как-то открываешь его? Тебе надо в оповещение запилить тот же интент, что и при навигации в самом приложении с теми же extra. Если сообщение уже пришло, значит оно у тебя загружено и тебе просто нужно его показать в нужном чате.
0
TonyBicbaev
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 133
15.09.2016, 13:10  [ТС] 17
ExFau$t, я же говорю, все открывается пока приложение не убито.
Когда оно уже не запущенно, тогда данных уже нет.
Дело в том что когда убиваешь, той активити уже нет. а уведомление висит.
0
ExFau$t
565 / 510 / 114
Регистрация: 08.05.2012
Сообщений: 2,538
15.09.2016, 13:12 18
TonyBicbaev, да это вообще не имеет значения, ты запускаешь интент по новой и происходит запуск приложения в соответствующем окне.
0
TonyBicbaev
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 133
15.09.2016, 13:19  [ТС] 19
ExFau$t, нууу вот это я и пытаюсь решить. Любо удалять либо заполнять.
0
ExFau$t
565 / 510 / 114
Регистрация: 08.05.2012
Сообщений: 2,538
15.09.2016, 13:22 20
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
public void createInfoNotification(String message, String name, String CategoryName, int id, int nameCat, double lat, double lon) {
        manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        Intent notificationIntent = new Intent(context, Information.class);
        notificationIntent.putExtra("locate1", lat);
        notificationIntent.putExtra("locate2", lon);
        notificationIntent.putExtra("cat", CategoryName);
        notificationIntent.putExtra("nameCat", nameCat);
        notificationIntent.putExtra("id", id);
        notificationIntent.putExtra("zoom", 15);
        notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
        notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        Notification.Builder nb = new Notification.Builder(context) 
                .setSmallIcon(R.mipmap.ic_launcher) 
                .setAutoCancel(true) 
                .setTicker(message) 
                .setContentIntent(PendingIntent.getActivity(context, id, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT))
                .setWhen(System.currentTimeMillis()) 
                .setContentTitle(message) 
                .setDefaults(Notification.DEFAULT_ALL); 
        Notification notification;
        if (Build.VERSION.SDK_INT >= 16)
            notification = new Notification.BigTextStyle(nb).bigText(name).build();
        else
            notification = nb.setContentText(name).getNotification();
        notification.flags |= Notification.FLAG_AUTO_CANCEL;
        manager.notify(id, notification); 
    }
Старенький код выдернул со старого проекта, рабочий. Запускается даже после рестарта телефона.

Добавлено через 2 минуты
Дело, наверное, в этом:
Java
1
notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER);
0
15.09.2016, 13:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.09.2016, 13:22

Уведомление от неактивного приложения
Вобщем, суть вопроса в теме-как сделать так, чтобы установленное, но не...

Убрать панель с названием приложения при редактировании лаяута
Подскажите как можно избавится от bar-а где написано название приложения именно...

Действие при сворачивании или при выходе
Добрый вечер. Вот такой небольшой вопрос. Какими действиями можно сделать...


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

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

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