Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
OT_VINTA
116 / 93 / 12
Регистрация: 13.02.2013
Сообщений: 271
#1

Уведомления с кнопками - Программирование Android

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

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

Пробовал делать и по другим примерам, но всё равно не плучалось
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.01.2018, 13:34
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Уведомления с кнопками (Программирование Android):

Уведомления
Приветствую, форумчане! Возникла такая задача, при написании приложения......

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

Уведомления по времени
Здравствуйте.Пытаюсь создать что то типо напоминалки пить лекарства....

Push-уведомления
Всем привет! Хочу сделать так что бы через, допустим, час показывалось...

Push уведомления
Добрый день, я полный новиЧег в программировании.И мне необходимо сделать так...

Уведомления в BroadcastReceiver
Привет, уважаемые! Прикрутил BroadcastReceiver, мониторю входящие смс, пытаюсь...

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

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
OT_VINTA
116 / 93 / 12
Регистрация: 13.02.2013
Сообщений: 271
03.01.2018, 17:00  [ТС] #3
Цитата Сообщение от 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
shavuz
114 / 120 / 25
Регистрация: 29.01.2014
Сообщений: 596
03.01.2018, 19:27 #4
Цитата Сообщение от OT_VINTA Посмотреть сообщение
не понятно откуда берётся mMediaSession
этот сеттер вам не нужен.
0
OT_VINTA
116 / 93 / 12
Регистрация: 13.02.2013
Сообщений: 271
03.01.2018, 23:08  [ТС] #5
Провозился весь день, но в итоге сделал сам

Функция создания уведомления в 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
03.01.2018, 23:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.01.2018, 23:08
Привет! Вот еще темы с решениями:

Ежедневные уведомления
Доброго времени суток. Требуется сделать ежедневное уведомление о некотором...

Обновление уведомления
Присылаю уведомление о новых сообщениях в чате через GCM. При каждом новом...

Notification Уведомления в Android
Попробую изложить корректно, но готовьтесь к ужасу.. Заранее извините(( На...

Выбор активити из уведомления
Добрый день. Есть у меня главная активити, которая, в общем-то, работатет в...


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

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

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