待定意图不起作用,通知不会打开活动

时间:2017-05-29 21:45:38

标签: android android-notifications

你好我有以下功能在我的应用程序中显示通知,但是我突然开始遇到一个问题,当我点击通知时它不会将我带到我在.setContentIntent()中指定的活动,这是我的代码:

@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
private void getNotifications() {
    ArrayList<com.xxxxxx.app234929.models.Notification> notifications = mNotificationsTable.get();

    int requestId = (int) System.currentTimeMillis();
    Intent notificationsIntent = new Intent(getApplicationContext(), NotificationsActivity.class);
    notificationsIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    PendingIntent intent = PendingIntent.getActivity(getApplicationContext(), requestId,
            notificationsIntent, PendingIntent.FLAG_UPDATE_CURRENT);

    NotificationCompat.InboxStyle inbox = new NotificationCompat.InboxStyle(new NotificationCompat.Builder(getApplicationContext())
            .setSmallIcon(R.drawable.ic_stat_mtgh_notification)
            .setColor(getResources().getColor(R.color.colorPrimary))
            .setContentTitle("xxxxxx")
            .setContentText("You have "+(notifications.size() > 1 ? "new updates" :"a new update"))
            .setNumber(notifications.size())
            .setContentIntent(intent)
            .setDefaults(Notification.DEFAULT_VIBRATE |
                    Notification.DEFAULT_SOUND | Notification.DEFAULT_LIGHTS))
            .setBigContentTitle("xxxxxx");

    for (int i=0; i < notifications.size(); i++) {
        inbox.addLine(notifications.get(i).getMessage());
    };

    Notification notification = inbox.build();

    NotificationManager notificationManager = (NotificationManager) getApplicationContext()
            .getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(1, notification);
}

我已经搜索了很多解决方案并尝试了它们,但它们都没有为我工作所以现在我不知道我在这里做错了什么。

1 个答案:

答案 0 :(得分:0)

这是我使用的代码并且工作正常,我在服务上使用它,但您可以在任何活动中使用:

Intent myIntent = new Intent(MyActivity.this, ActivityIWantToOpenOnClick.class);
PendingIntent pendingIntent = PendingIntent.getActivity(MyActivity.this, 0, myIntent, Intent.FLAG_ACTIVITY_NEW_TASK);

NotificationManager nManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
NotificationCompat.Builder ncomp = new NotificationCompat.Builder(MyActivity.this);
ncomp.setContentTitle("Message Tittle");
ncomp.setContentText("Message Text");
ncomp.setTicker("Message Ticker");                                  
ncomp.setSmallIcon(R.drawable.your_icon);
ncomp.setAutoCancel(true);
ncomp.setContentIntent(pendingIntent);
nManager.notify((int) System.currentTimeMillis(), ncomp.build());