代码之家  ›  专栏  ›  技术社区  ›  Md Tariqul Islam

自定义通知单击侦听器在上面的android api 26中不工作

  •  1
  • Md Tariqul Islam  · 技术社区  · 7 年前

    通知工作得很好,下面是api lavel 26,但是26以及更高版本的android版本通知显示,但单击事件不工作。我有音乐播放器来处理点击。以上26个api MusicPlayerReceiver未调用。但是26号钟声听起来很完美。我检查了stackoverflow解决方案,但这些都不适合我。

     private void createNotification(SuraDetail mSongDetail) {
                    try {
                        String songName = mSongDetail.getTitle();
                        String authorName = mSongDetail.getArtist();
                        String albumName = mSongDetail.getDisplay_name();
                        SuraDetail audioInfo = MediaController.getInstance().getPlayingSongDetail();
    
                        RemoteViews simpleContentView = new RemoteViews(getApplicationContext().getPackageName(), R.layout.player_small_notification);
                        RemoteViews expandedView = null;
                        if (supportBigNotifications) {
                            expandedView = new RemoteViews(getApplicationContext().getPackageName(), R.layout.player_small_notification);
                        }
    
                        Intent intent = new Intent(MyApplication.applicationContext, PobitroQuranDetailsActivity.class);
                        intent.setAction("openplayer");
                        intent.setFlags(32768);
                        PendingIntent contentIntent = PendingIntent.getActivity(MyApplication.applicationContext, 0, intent, 0);
    
                        Notification notification = new NotificationCompat.Builder(getApplicationContext()).setSmallIcon(R.drawable.quran)
                                .setContentIntent(contentIntent).setContentTitle(songName).build();
    
                        notification.contentView = simpleContentView;
                        if (supportBigNotifications) {
                            notification.bigContentView = expandedView;
                        }
    
                        setListeners(simpleContentView);
                        if (supportBigNotifications) {
                            setListeners(expandedView);
                        }
    
                        Bitmap albumArt = audioInfo != null ? audioInfo.getSmallCover(MyApplication.applicationContext) : null;
    
                        if (albumArt != null) {
                            notification.contentView.setImageViewBitmap(R.id.player_album_art, albumArt);
                            if (supportBigNotifications) {
                                notification.bigContentView.setImageViewBitmap(R.id.player_album_art, albumArt);
                            }
                        } else {
                            notification.contentView.setImageViewResource(R.id.player_album_art, R.drawable.quran);
                            if (supportBigNotifications) {
                                notification.bigContentView.setImageViewResource(R.id.player_album_art, R.drawable.quran);
                            }
                        }
                        notification.contentView.setViewVisibility(R.id.player_progress_bar, View.GONE);
                        notification.contentView.setViewVisibility(R.id.player_next, View.VISIBLE);
                        notification.contentView.setViewVisibility(R.id.player_previous, View.VISIBLE);
                        if (supportBigNotifications) {
                            notification.bigContentView.setViewVisibility(R.id.player_next, View.VISIBLE);
                            notification.bigContentView.setViewVisibility(R.id.player_previous, View.VISIBLE);
                            notification.bigContentView.setViewVisibility(R.id.player_progress_bar, View.GONE);
                        }
    
                        if (MediaController.getInstance().isAudioPaused()) {
                            notification.contentView.setViewVisibility(R.id.player_pause, View.GONE);
                            notification.contentView.setViewVisibility(R.id.player_play, View.VISIBLE);
                            if (supportBigNotifications) {
                                notification.bigContentView.setViewVisibility(R.id.player_pause, View.GONE);
                                notification.bigContentView.setViewVisibility(R.id.player_play, View.VISIBLE);
                            }
                        } else {
                            notification.contentView.setViewVisibility(R.id.player_pause, View.VISIBLE);
                            notification.contentView.setViewVisibility(R.id.player_play, View.GONE);
                            if (supportBigNotifications) {
                                notification.bigContentView.setViewVisibility(R.id.player_pause, View.VISIBLE);
                                notification.bigContentView.setViewVisibility(R.id.player_play, View.GONE);
                            }
                        }
    
                        notification.contentView.setTextViewText(R.id.player_song_name, songName);
                        notification.contentView.setTextViewText(R.id.player_author_name, authorName);
                        if (supportBigNotifications) {
                            notification.bigContentView.setTextViewText(R.id.player_song_name, songName);
                            notification.bigContentView.setTextViewText(R.id.player_author_name, authorName);
            //                notification.bigContentView.setTextViewText(R.id.player_albumname, albumName);
                        }
                        notification.flags |= Notification.FLAG_ONGOING_EVENT;
                        startForeground(1, notification);
    
                        if (remoteControlClient != null) {
                            RemoteControlClient.MetadataEditor metadataEditor = remoteControlClient.editMetadata(true);
                            metadataEditor.putString(MediaMetadataRetriever.METADATA_KEY_ARTIST, authorName);
                            metadataEditor.putString(MediaMetadataRetriever.METADATA_KEY_TITLE, songName);
                       /*     if (audioInfo != null && audioInfo.getCover(MyApplication.applicationContext) != null) {
                                metadataEditor.putBitmap(RemoteControlClient.MetadataEditor.BITMAP_KEY_ARTWORK,
                                        audioInfo.getCover(MyApplication.applicationContext));
                            }*/
                            metadataEditor.apply();
                            audioManager.requestAudioFocus(this, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
    
                public void setListeners(RemoteViews view) {
                    try {
                        PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, new Intent(NOTIFY_PREVIOUS),
                                PendingIntent.FLAG_UPDATE_CURRENT);
                        view.setOnClickPendingIntent(R.id.player_previous, pendingIntent);
                        pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, new Intent(NOTIFY_CLOSE), PendingIntent.FLAG_UPDATE_CURRENT);
                        view.setOnClickPendingIntent(R.id.player_close, pendingIntent);
                        pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, new Intent(NOTIFY_PAUSE), PendingIntent.FLAG_UPDATE_CURRENT);
                        view.setOnClickPendingIntent(R.id.player_pause, pendingIntent);
                        pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, new Intent(NOTIFY_NEXT), PendingIntent.FLAG_UPDATE_CURRENT);
                        view.setOnClickPendingIntent(R.id.player_next, pendingIntent);
                        pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, new Intent(NOTIFY_PLAY), PendingIntent.FLAG_UPDATE_CURRENT);
                        view.setOnClickPendingIntent(R.id.player_play, pendingIntent);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   vanomart    6 年前

    我在我的应用程序中注意到了完全相同的问题。这个问题显然是由意图的构造方式引起的,所以不是调用

    new Intent(String action);
    

    现在需要打电话

    new Intent (String action, 
                Uri uri, 
                Context packageContext, 
                Class<?> cls)