android - 如何在单击通知时显示对​​话框

时间:2016-02-06 05:37:21

标签: android android-notifications android-dialog

我通过BroadcastReceiver在我的应用程序中收到通知,问题是,如何将数据解析为活动并与接收到的数据进行对话?

这是我的代码,但是当我点击通知时,没有任何反应:

NotificationManager notificationManager = (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE);

        Intent notificationIntent = new Intent(Intent.ACTION_VIEW);
        notificationIntent.setData(Uri.parse(link));
        PendingIntent pending = PendingIntent.getActivity(ctx, 0, notificationIntent, Intent.FLAG_ACTIVITY_NEW_TASK);

        Notification myNotification = new NotificationCompat.Builder(ctx)
                .setSmallIcon(R.drawable.ic_launcher).setAutoCancel(false).setLargeIcon(remote_picture)
                .setContentTitle(onvan).setStyle(new NotificationCompat.BigTextStyle().bigText(msg))
                .setContentText(msg).setContentIntent(pending).build();
        notificationManager.notify(1, myNotification);

我有一些变量像链接,msg,onvan包含我的数据,我需要将这些变量发送到一个活动并进行对话。

我该怎么办?

2 个答案:

答案 0 :(得分:1)

您可以使用方法Activity将通知中的数据发送到另一个putExtra并将其设为

PendingIntent pending = PendingIntent.getActivity(ctx, 0, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT));

取代此

PendingIntent pending = PendingIntent.getActivity(ctx, 0, notificationIntent, Intent.FLAG_ACTIVITY_NEW_TASK);`

答案 1 :(得分:0)

试试这个:

Intent notifyIntent = new Intent(context,YourActivityClassHere.class);
notifyIntent.setFlag(Intent.FLAG_ACTIVITY_NEW_TASK);
//UNIQUE_ID if you expect more than one notification to appear
PendingIntent intent = PendingIntent.getActivity(SimpleNotification.this, UNIQUE_ID, 
            notifyIntent, PendingIntent.FLAG_UPDATE_CURRENT);

只需让 PendingIntent 打开您的某个活动,让您的活动完全透明,然后打开一个对话框。

编辑:如果您想从通知点击事件中打开一个活动:

假设 notif 通知对象:

Intent notificationIntent = new Intent(this.getApplicationContext(), ActivityToStart.class);
PendingIntent contentIntent = PendingIntent.getActivity(this.getApplicationContext(), 0, notificationIntent, 0);
notif.contentIntent = contentIntent;

有关详细信息,请访问此处。 Android - Prompt Dialog window when touch on Notification