首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正在单击每个通知按钮的不同触发器

正在单击每个通知按钮的不同触发器
EN

Stack Overflow用户
提问于 2017-09-14 20:02:54
回答 1查看 24关注 0票数 0

我正在创建一个媒体通知,需要触发基于点击按钮的不同功能。有没有办法区分这些按钮,或者我需要创建4-5个不同的Intents和PendingIntents?以下是代码,它是工作的,但并不完全是如何实现的:

编辑:我添加了一个新的函数来初始化新的待定意图,但事情是这样的,当我按播放时,playIntent被触发,但当我按暂停意图时,playIntent再次被触发。

代码语言:javascript
复制
 private void showNotification(boolean persistent) {
        String channel_id = "TEST_CHANNEL";
        NotificationManager manager = (NotificationManager) getSystemService(
                Context.NOTIFICATION_SERVICE
        );

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
            NotificationChannel testChannel = new NotificationChannel(
                    channel_id,
                    "TEST_CHANNEL",
                    NotificationManager.IMPORTANCE_DEFAULT
            );

            testChannel.setLightColor(Color.GREEN);

            assert manager != null;
            manager.createNotificationChannel(testChannel);
        }


        PendingIntent pauseIntent = initIntent("pause");
        PendingIntent playIntent = initIntent("play");

        NotificationCompat.Builder mBuilder =
                new NotificationCompat.Builder(this, channel_id)
                        .setSmallIcon(R.drawable.ic_remote_control)
                        .addAction(R.drawable.ic_play_button, "Play", playIntent)
                        .addAction(R.drawable.ic_round_pause_button, "Pause", pauseIntent)
                        .addAction(R.drawable.ic_forward, "Title", null)
                        .addAction(R.drawable.ic_back_left_arrow_circular_button, "Title", null)
                        .setStyle(new android.support.v4.media.app.NotificationCompat.MediaStyle())
                        .setOngoing(persistent)
                        .setAutoCancel(true);


        assert manager != null;
        manager.notify(123, mBuilder.build());
    }

    private PendingIntent initIntent(String action) {
        Intent tempIntent = new Intent(this, ActionReceiver.class);

        tempIntent.putExtra("action", action);

        TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);

        stackBuilder.addNextIntent(tempIntent);


        return PendingIntent.getBroadcast(
                this,
                1,
                tempIntent,
                PendingIntent.FLAG_UPDATE_CURRENT
        );
    }
EN

回答 1

Stack Overflow用户

发布于 2017-09-14 21:01:42

您需要为每个操作创建不同的待定意图。尽管如此,您也可以使用相同的类来处理基于每个待定意图的不同操作的所有操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46218610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档