0

请原谅我的英语,我是法国人:

我有一个关于 android 通知的问题...我的应用程序上有一个收件箱,当用户收到新通知时会收到通知。当他单击通知时,我想通过正确的对话打开正确的活动,因此我必须传递一个 ID。

我已经进行了很多搜索,但我找不到...你能帮我吗?

这是我的代码:

        NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(context)
            .setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle(title)
            .setAutoCancel(true)
            .setContentText(text);

    // Creates an explicit intent for an Activity in your app
    Intent resultIntent = new Intent(context, LandingActivity.class);

    // The stack builder object will contain an artificial back stack for the
    // started Activity.
    // This ensures that navigating backward from the Activity leads out of
    // your application to the Home screen.
    TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
    // Adds the back stack for the Intent (but not the Intent itself)
    stackBuilder.addParentStack(MainActivity.class);
    // Adds the Intent that starts the Activity to the top of the stack
    stackBuilder.addNextIntent(resultIntent);

    PendingIntent resultPendingIntent =
            stackBuilder.getPendingIntent(
                0,
                PendingIntent.FLAG_CANCEL_CURRENT
            );
    mBuilder.setContentIntent(resultPendingIntent);
    NotificationManager mNotificationManager =
        (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    // mId allows you to update the notification later on.
    mNotificationManager.notify(0, mBuilder.build());

谢谢。

4

2 回答 2

1

在这种情况下,您可以将对话的 ID 保存在将启动您的应用的 Intent 中。您可以通过使用附加功能来做到这一点:

resultIntent.putExtra("conversationID", "234553");

然后,在您的 MainActivity 中,您处理用户单击您的通知的情况:

Bundle extras = getIntent().getExtras();
if (extras != null) {
    String value = extras.getString("conversationID");
    //Display conversation
}
于 2013-06-06T15:02:58.440 回答
0

我不知道我的问题是否正确:如果您想根据收到的内容开始不同的活动,则必须针对这些情况制定不同的意图。

如果您总是想打开 LandingActivity 并向其传递数据,请将它们作为额外内容添加到您的 Intent,请参阅如何在 Android 应用程序中的活动之间传递数据?.

于 2013-06-06T15:01:43.410 回答