Android入门到卸载 2021-09-19 23:15 采纳率: 71.4%
浏览 11
已结题

android Notification注册的广播不能响应是什么原因??


private Notification notification;

    private final void createNotification(String action, Music music) {
        int pausePlay = R.drawable.ic_baseline_play_arrow_24;
        if (action.equals("play")) {
            pausePlay = R.drawable.ic_baseline_pause_24;
        }

        Intent intent1 = new Intent(this, BroadcastClass.class).setAction("com.flymusic.players.musicService.MusicNotification.pausePlay");
        Intent intent2 = new Intent(this, BroadcastClass.class).setAction("com.flymusic.players.musicService.MusicNotification.previous");
        Intent intent3 = new Intent(this, BroadcastClass.class).setAction("com.flymusic.players.musicService.MusicNotification.next");
        Resources r = GlobalContext.getContext().getResources();
        Bitmap bmp = BitmapFactory.decodeResource(r, R.drawable.logo3);
        PendingIntent pendingIntent1 = PendingIntent.getBroadcast(this, 1, intent1, 0);
        PendingIntent pendingIntent2 = PendingIntent.getBroadcast(this, 2, intent2, 0);
        PendingIntent pendingIntent3 = PendingIntent.getBroadcast(this, 3, intent3, 0);
        Intent activityIntent = new Intent(this, MusicPlayerActivity.class);
        PendingIntent activityPendingIntent = PendingIntent.getActivity(this, 2, activityIntent, 0);

        notification = new NotificationCompat.Builder(this, "channel1")
                .setOngoing(true)
                .setPriority(NotificationCompat.PRIORITY_MAX)
                .setContentText(music.getSinger())
                .setContentTitle(music.getName())
                .setContentIntent(activityPendingIntent)
                .addAction(R.drawable.ic_baseline_skip_previous_24, "Previous", pendingIntent2)
                .addAction(pausePlay, "PausePlay", pendingIntent1)
                .addAction(R.drawable.ic_baseline_skip_next_24, "Next", pendingIntent3)
                .setSmallIcon(R.drawable.ic_baseline_music_note_24)
                .setLargeIcon(PublicModule.albumBitmap==null? bmp:PublicModule.albumBitmap)
                .setPriority(NotificationCompat.PRIORITY_LOW)
                .setOnlyAlertOnce(true)
                .setStyle(new androidx.media.app.NotificationCompat.MediaStyle()

                        .setShowActionsInCompactView(0, 1, 2)
                        // For backwards compatibility with Android L and earlier.
                        .setShowCancelButton(true)
                        .setCancelButtonIntent(
                                MediaButtonReceiver.buildMediaButtonPendingIntent(
                                        this,
                                        PlaybackStateCompat.ACTION_STOP)))
                .setSubText("Album")
                .build();

        NotificationManager notificationManager = (NotificationManager) this.getSystemService(NOTIFICATION_SERVICE);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            NotificationChannel mChannel = new NotificationChannel("channel1", "channel1", NotificationManager.IMPORTANCE_HIGH);
            notificationManager.createNotificationChannel(mChannel);
        }
        notificationManager.notify(0, notification);
        startForeground(0, notification);
        //Toast.makeText(this, "hhhhhhhhh", Toast.LENGTH_SHORT).show();
        //new androidx.media.app.NotificationCompat.MediaStyle().setShowActionsInCompactView(0, 1, 2)
        ;
        notificationBroadcastReceiver = new NotificationBroadcastReceiver();
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction("com.flymusic.players.musicService.MusicNotification.pausePlay");
        intentFilter.addAction("com.flymusic.players.musicService.MusicNotification.previous");
        intentFilter.addAction("com.flymusic.players.musicService.MusicNotification.next");
        registerReceiver(notificationBroadcastReceiver, intentFilter);
    }

    class NotificationBroadcastReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            switch (intent.getAction()) {
                case "com.flymusic.players.musicService.MusicNotification.pausePlay":
                    playerPresenter.playOrPause();
                    break;
                case "com.flymusic.players.musicService.MusicNotification.previous":
                    playerPresenter.PREVSong();
                    break;
                case "com.flymusic.players.musicService.MusicNotification.next":
                    playerPresenter.NextSong();
                    break;
            }
        }
    }
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 9月27日
    • 创建了问题 9月19日

    悬赏问题

    • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
    • ¥15 如何在scanpy上做差异基因和通路富集?
    • ¥20 关于#硬件工程#的问题,请各位专家解答!
    • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
    • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
    • ¥30 截图中的mathematics程序转换成matlab
    • ¥15 动力学代码报错,维度不匹配
    • ¥15 Power query添加列问题
    • ¥50 Kubernetes&Fission&Eleasticsearch
    • ¥15 報錯:Person is not mapped,如何解決?