Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
116 / 94 / 12
Регистрация: 13.02.2013
Сообщений: 278

Уведомления с кнопками

01.01.2018, 13:34. Показов 2672. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Никак не получается сделать уведомление с кнопками, поэтому прошу Вашей помощи
Пробовал делать по этому примеру, но почему-то уведомление появляется без кнопок

Пробовал делать и по другим примерам, но всё равно не плучалось
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.01.2018, 13:34
Ответы с готовыми решениями:

GridBagLayout и GridLayout - промежутки между кнопками, и между кнопками и окном программы
Новичок, ногами не бейте. Иду по учебнику - сделал калькулятор с помощью GridLayout. Работает вроде норм, но не нравится - откровенно...

Уведомления
Приветствую, форумчане! Возникла такая задача, при написании приложения... Нужно чтобы в определённый период каждого месяца приложение...

Уведомления
Всем привет. Возникла такая задача, есть сервер 1с, и телеграм канал с ботом, нужно: Чтобы этот бот присылал уведомления о успешном...

4
114 / 120 / 26
Регистрация: 29.01.2014
Сообщений: 609
03.01.2018, 16:14
вот пример

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Notification notification = new Notification.Builder(context)
    // Show controls on lock screen even when user hides sensitive content.
    .setVisibility(Notification.VISIBILITY_PUBLIC)
    .setSmallIcon(R.drawable.NotIcon)
//HERE ARE YOUR BUTTONS
    .addAction(R.drawable.ic_prev, "BUTTON 1", myIntentToButtonOneScreen) // #0
    .addAction(R.drawable.ic_pause, "BUTTON 2", myIntentToButtonTwoScreen)  // #1
    .addAction(R.drawable.ic_next, "BUTTON 3", myIntentToButtonThreeScreen)     // #2
    // Apply the media style template
    .setStyle(new Notification.MediaStyle()
    .setShowActionsInCompactView(1)
    .setMediaSession(mMediaSession.getSessionToken())
    .setContentTitle("Example for you")
    .setContentText("Example for you")
    .setLargeIcon(ButtonExampleIcon)
    .build();
0
116 / 94 / 12
Регистрация: 13.02.2013
Сообщений: 278
03.01.2018, 17:00  [ТС]
Цитата Сообщение от shavuz Посмотреть сообщение
вот пример
1) не понятно откуда берётся mMediaSession
2) всё равно кнопки не появляются

Сделал по другому, создал кастомный стиль для уведомления, но теперь не знаю как сделать обработчик клика на кнопку
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        Intent playPauseIntent = new Intent();
        PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, playPauseIntent, PendingIntent.FLAG_UPDATE_CURRENT);
        int icon = R.mipmap.ic_launcher;
        long when = System.currentTimeMillis();
 
        NotificationManager mNotificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
 
        RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.control_notification);
 
        contentView.setTextViewText(R.id.title, "Custom notification");
        contentView.setTextViewText(R.id.text, "This is a custom layout");
        contentView.setOnClickPendingIntent(R.id.play, pendingIntent);
        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                .setSmallIcon(icon)
                .setContent(contentView)
                .setContentTitle("Custom Notification")
                .setWhen(when);
        mNotificationManager.notify(1, notificationBuilder.build());
По клику должна выполняться функция из MainActivity
0
114 / 120 / 26
Регистрация: 29.01.2014
Сообщений: 609
03.01.2018, 19:27
Цитата Сообщение от OT_VINTA Посмотреть сообщение
не понятно откуда берётся mMediaSession
этот сеттер вам не нужен.
0
116 / 94 / 12
Регистрация: 13.02.2013
Сообщений: 278
03.01.2018, 23:08  [ТС]
Провозился весь день, но в итоге сделал сам

Функция создания уведомления в MainActivity.java
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
public void sendActionNotification(boolean playp) {
        Intent intent = new Intent(this, activity_play.class);
        intent.setAction("playPause");
        PendingIntent pIntent = PendingIntent.getService(this, 0, intent, 0);
 
        Intent intentNext = new Intent(this, activity_play.class);
        intentNext.setAction("next");
        PendingIntent pIntentNext = PendingIntent.getService(this, 0, intentNext, 0);
 
        Intent intentPrev = new Intent(this, activity_play.class);
        intentPrev.setAction("prev");
        PendingIntent pIntentPrev = PendingIntent.getService(this, 0, intentPrev, 0);
 
        int icon = R.mipmap.ic_launcher;
        long when = System.currentTimeMillis();
 
        NotificationManager mNotificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
 
        RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.control_notification);
 
        contentView.setTextViewText(R.id.title, "title");
        contentView.setTextViewText(R.id.text, mnamefornotific);
        if(!playp) contentView.setImageViewResource(R.id.playy, R.drawable.play); else contentView.setImageViewResource(R.id.playy, R.drawable.pause);
        contentView.setOnClickPendingIntent(R.id.playy, pIntent);
        contentView.setOnClickPendingIntent(R.id.playNext, pIntentNext);
        contentView.setOnClickPendingIntent(R.id.playPrev, pIntentPrev);
 
        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                .setSmallIcon(icon)
                .setContent(contentView)
                .setContentIntent(pIntent)
                .setTicker("Проигрывание")
                .setContentTitle("title")
                .setOngoing(true)
                .setWhen(when);
        mNotificationManager.notify(1, notificationBuilder.build());
    }
Кастомное уведомление control_notification.xml
XML
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
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="0dp" >
    <TextView android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#ffffff"
        android:textSize="10dp" />
    <TextView android:id="@+id/text"
        android:layout_marginRight="150dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/title"
        android:textColor="#ffffff"
        android:textSize="15dp" />
    <ImageButton
        android:id="@+id/playPrev"
        android:layout_width="45dp"
        android:layout_height="45dp"
        android:src="@drawable/prev"
        android:layout_alignParentRight="true"
        android:layout_marginRight="100dp"
        android:layout_marginTop="10dp"
        android:scaleType="fitCenter"
        />
    <ImageButton
        android:id="@+id/playy"
        android:layout_width="45dp"
        android:layout_height="45dp"
        android:src="@drawable/play"
        android:scaleType="fitCenter"
        android:layout_alignParentRight="true"
        android:layout_marginRight="50dp"
        android:layout_marginTop="10dp"
        android:focusable="true"
        android:clickable="true"
        />
    <ImageButton
        android:id="@+id/playNext"
        android:layout_width="45dp"
        android:layout_height="45dp"
        android:src="@drawable/next"
        android:layout_alignParentRight="true"
        android:layout_marginTop="10dp"
        android:scaleType="fitCenter"
        />
 
</RelativeLayout>
И класс в activity_play.java
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
public class activity_play extends Service {
 
    public void onCreate() {
        super.onCreate();
    }
 
    public int onStartCommand(Intent intent, int flags, int startId) {
        someTask(intent.getAction());
        return super.onStartCommand(intent, flags, startId);
    }
 
    public void onDestroy() {
        super.onDestroy();
    }
 
    public IBinder onBind(Intent intent) {
        return null;
    }
 
    void someTask(String cmd) {
        final String fcmd = cmd;
        Handler handler = new Handler(Looper.getMainLooper());
        handler.post(new Runnable() {
            @Override
            public void run() {
                if(fcmd.equals("playPause")) MainActivity.playPause();
                if(fcmd.equals("next")) MainActivity.nextbtn.performClick();
                if(fcmd.equals("prev")) MainActivity.prevbtn.performClick();
            }
        });
    }
}
Вот что вышло:


Осталось сделать его неубираемым, но это уже другая истрия
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.01.2018, 23:08
Помогаю со студенческими работами здесь

Настройки уведомления
Здравствуй форум! У меня на сайте есть уведомления: ответ на коммент, заявка в друзья, ЛС и тд, которые отправляются на email. В настройках...

Всплывающие уведомления
Всем привет. В общем кто то может сталкивался с Notification. Так вот скажите как же сделать эти уведомления хотя бы примеры. ...

Ежедневные уведомления
Доброго времени суток. Требуется сделать ежедневное уведомление о некотором игровом событии. Хотел бы узнать мнение окружающих: как это...

Отправка уведомления
добрый день! помогите реализовать одну кнопочку. нужно кнопку закрепить на сайт. Её функции, из бд берет почту клиента и...

Уведомления Notification
как вызвать новое активити через уведомление ?


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru