Android 单击通知后关闭状态栏

Android 单击通知后关闭状态栏,android,notifications,statusbar,Android,Notifications,Statusbar,我的通知包含几个按钮: 1按钮启动主活动(执行此操作时应关闭状态栏) 其中4人发送未决意图以控制音乐(应保持状态栏打开) 问题是,第一个按钮没有关闭状态栏 第一个按钮发送的PendingEvent: Intent activityIntent = new Intent(smp, MusicShaker.class) .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_AC

我的通知包含几个按钮:

  • 1按钮启动主活动(执行此操作时应关闭状态栏)
  • 其中4人发送未决意图以控制音乐(应保持状态栏打开)
问题是,第一个按钮没有关闭状态栏

第一个按钮发送的PendingEvent:

Intent activityIntent = new Intent(smp, MusicShaker.class)
            .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
                    | Intent.FLAG_ACTIVITY_SINGLE_TOP);
activityIntent.setAction(MyIntentAction.DO_LAUNCH_ACTIVITY_FROM_NOTIF);
remoteViews.setOnClickPendingIntent(R.id.notif_album_IV, PendingIntent
            .getActivity(ctxt, 0, activityIntent,
                    PendingIntent.FLAG_CANCEL_CURRENT));
活动已正确启动,但状态栏仍停留在那里,不会自行关闭。
我是否丢失/误解了一面旗帜?我可以从MyActivity.onResume()程序性地关闭状态栏吗?
编辑:顺便说一下,通知是由服务推送的


谢谢=)

是的,当应用程序启动时,您必须以编程方式取消通知

NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancel(NOTIFICATION_ID);
好的,我找到了一个解决办法。。。 我无法复制标准通知产生的相同行为,因此我:
-使我的imageButton“notif_album_IV”不可点击,并将其更改为ImageView
-使用此代码:

builder.setContentIntent(PendingIntent.getActivity(smp, 0,
  activityIntent,PendingIntent.FLAG_CANCEL_CURRENT))

与在图像上“手动”设置SetOnClickPendingContent不同,意图广播由内容背景处理

您只需在创建生成器时指定setAutoCancel(true)。仅此而已:)

这对我很有用:

sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));

此解决方案允许我在不关闭状态栏的情况下删除通知,实际上我需要相反的行为(在不删除notif的情况下关闭状态栏)
sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));