Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android中关闭通知下拉列表>;=3.0从带有附加按钮的自定义富通知?_Android_Notifications_Android 3.0 Honeycomb_Android 4.0 Ice Cream Sandwich - Fatal编程技术网

如何在Android中关闭通知下拉列表>;=3.0从带有附加按钮的自定义富通知?

如何在Android中关闭通知下拉列表>;=3.0从带有附加按钮的自定义富通知?,android,notifications,android-3.0-honeycomb,android-4.0-ice-cream-sandwich,Android,Notifications,Android 3.0 Honeycomb,Android 4.0 Ice Cream Sandwich,我成功地为Android>=3.0创建了一个自定义富通知,其中显示了一些文本和一个附加按钮。如果单击通知下拉列表中按钮以外的任何位置的通知,则通知将被取消,下拉列表将关闭,并按预期启动指定的意图。 如果单击通知中的专用按钮,则会成功启动不同的意图,但下拉列表保持打开状态(通知仍然存在,但我稍后会取消它,这不是问题)。意图启动显示在“通知”下拉列表后面的活动 我想要实现的是保持所有当前行为如所述,同时关闭按钮启动意图的通知下拉列表-这可能吗?或者,如果来自按钮意图的活动获得窗口焦点就足够了 以下是

我成功地为Android>=3.0创建了一个自定义富通知,其中显示了一些文本和一个附加按钮。如果单击通知下拉列表中按钮以外的任何位置的通知,则通知将被取消,下拉列表将关闭,并按预期启动指定的意图。 如果单击通知中的专用按钮,则会成功启动不同的意图,但下拉列表保持打开状态(通知仍然存在,但我稍后会取消它,这不是问题)。意图启动显示在“通知”下拉列表后面的活动

我想要实现的是保持所有当前行为如所述,同时关闭按钮启动意图的通知下拉列表-这可能吗?或者,如果来自按钮意图的活动获得窗口焦点就足够了

以下是自定义通知的代码(如果有帮助):

            Notification.Builder builder = new Notification.Builder(main)
                .setSmallIcon(R.drawable.notification)
                .setAutoCancel(true)
                .setTicker(text)
                .setContentIntent(...);

            RemoteViews layout = new RemoteViews(
                    main.getPackageName(), R.layout.notification);
            layout.setTextViewText(R.id.title, title);
            layout.setTextViewText(R.id.text, text);
            Intent i = new Intent(
                    "snooze", null, main, Snooze.class
            );
            i.putExtra(KEY_WIDGET_ID, widgetId);
            layout.setOnClickPendingIntent(R.id.notification_zzz, PendingIntent.getActivity( main, 0, i, PendingIntent.FLAG_UPDATE_CURRENT ));
            builder.setContent(layout);

            ...
            NotificationManager nm = 
                (NotificationManager)main.getSystemService(Context.NOTIFICATION_SERVICE);
            nm.notify(0, builder.getNotification());

在Android开发者办公时间里问了这个问题: (问题由49:10开始)

答案是,这是不可能的,我甚至不应该这样做,我对此表示怀疑。 这就是我创建功能请求的原因:

编辑08-10-12: 从Android 4.1开始,这是可能的,因为通知现在可以包括其他操作。有关详细信息,请参见下页:

对于Android 3.0到4.0,我没有找到解决方案。但正如上面提到的安卓4.1及以上版本,有一个内置的额外操作机制,也会关闭下拉列表,这就是我正在使用的。您可以在此处找到更多详细信息: