【发布时间】:2014-12-09 19:24:50
【问题描述】:
我正在尝试创建一个Dialog,它显示在NotificationArea 的顶部,并且与Dialog 交互不会关闭NotificationArea。说明我想要的一个很好的例子是 Play Store 上的BubbleUPNP 应用程序。
因此,当我单击标记的按钮时,会显示对话框,我可以同时与对话框和通知进行交互。
所以,我已经尝试过:
我创建了一个Notification 并在其中一个按钮上设置了一个PendingIntent
Intent volumeUpIntent = new Intent(context, NotificationButtonListener.class);
volumeUpIntent.setAction("setVolume");
PendingIntent pendingVolumeUpIntent = PendingIntent.getBroadcast(context, 0, volumeUpIntent, 0);
remoteView.setOnClickPendingIntent(R.id.volumeIBtn, pendingVolumeUpIntent);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setSmallIcon(android.R.drawable.ic_media_play);
builder.setAutoCancel(false);
builder.setOngoing(true);
builder.setContentInfo(getResources().getText(R.string.drag_to_expand));
notification = builder.build();
mNM = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notification.bigContentView = remoteView;
notification.priority = Notification.PRIORITY_MAX;
mNM.notify(1, notification);
然后我创建了一个BroadcastListener,它捕获Notification 的动作:
public static class NotificationButtonListener extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals("setVolume")) {
Intent volumeIntent = new Intent(context, VolumeActivity.class);
volumeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(volumeIntent);
}
当我单击Notification 中的按钮时,主题为Dialog 的Activity 会出现,但是当我尝试与Dialog 交互时,NotificationArea 会关闭。有什么建议,如何实现我的目标?
【问题讨论】:
-
只是为了仔细检查问题出在哪里:当您的未决意图解析为广播时,通知区域应该保持打开状态。在您的情况下,如果没有对话框,这是否有效?因此,如果您不显示对话框,抽屉会保持打开状态?
-
我打开通知,按下按钮,显示对话框,但它有点“低于”通知层,所以当我尝试与对话框交互时(单击通知区域外),通知区域崩溃.
-
问题是如果您不显示对话框,通知区域是否保持打开状态。我想是这样的。可能您的对话会加强焦点,因此您的通知会被折叠。您可以尝试在对话框活动的布局上使用 android:focusable="false" 和 android:focusableInTouchMode="false" - 但这只是猜测。
-
不,您没有正确理解最初的问题。当我显示对话框 NotificationArea 未折叠时,当我尝试与对话框交互时它会折叠。
-
我真的认为你想要的行为是不可能的,IMO 这就是为什么
addAction()可以在通知以及自定义布局和PenginIntent上使用。
标签: android