6

我的通知包含几个按钮:

  • 1个按钮启动主要活动(这样做时应该关闭状态栏)
  • 其中 4 个发送未决意图来控制音乐(应保持状态栏打开)

问题是,第一个按钮没有关闭状态栏......

第一个按钮发送的 PendingIntent :

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() 关闭状态栏吗?
编辑:顺便说一下,通知是由服务推送的

谢谢 =)

4

4 回答 4

4

您只需要在创建构建器时指定 setAutoCancel(true)。这就是全部:)

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle("title goes here")
            .setContentText("content text goes here").setAutoCancel(true);
于 2013-11-02T15:07:56.157 回答
2

好的,我找到了解决方案......我无法重现标准通知产生的相同行为,所以我:
- 使我的 imageButton “notif_album_IV” 不可点击,并将其更改为 ImageView
- 使用此代码:

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

不是在图像上“手动”设置 setOnClickPendingIntent,而是由内容背景处理意图广播

于 2012-08-22T17:24:12.883 回答
2

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

NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancel(NOTIFICATION_ID);
于 2012-08-21T17:37:23.577 回答
1

这对我有用:

sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
于 2018-11-08T09:28:34.953 回答