Android - 按通知显示活动

时间:2017-04-28 13:09:53

标签: android android-activity notifications android-notifications

我有一个推送通知的活动。如果活动正在运行后台,我希望通知在前台打开活动(相同的活动,而不是另一个实例)。基本上,活动应该在foregroung中打开。

这是我的代码(在MyActivity类中):

NotificationCompat.Builder mBuilder =
        new NotificationCompat.Builder(this)
                .setAutoCancel(true)
                .setPriority(2)
                .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
                .setSmallIcon(R.drawable.notifica)
                .setLargeIcon(bmp)
                .setContentTitle(Titolo)
                .setContentText(Testo);



Intent resultIntent = new Intent(this, MyActivity.class);
resultIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
        | Intent.FLAG_ACTIVITY_SINGLE_TOP);


PendingIntent resultPendingIntent =
        PendingIntent.getActivity(
                getBaseContext(),
                0,
                resultIntent,
                PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(resultPendingIntent);

mBuilder.setLights(Color.BLUE, 500, 500);
long[] pattern = {500,500,500,500,500,500,500,500,500};
mBuilder.setVibrate(pattern);
Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
mBuilder.setSound(alarmSound);
mNotificationManager.notify(mId, mBuilder.build());

我还在清单中添加了这一行:

android:launchMode="singleTop"

但是不起作用,它创建了MyActivity的新实例。 我能怎么做? TNX

2 个答案:

答案 0 :(得分:0)

看起来您在初始化之前将PendingIntent设置为构建器。

答案 1 :(得分:0)

我将您的代码与我的工作代码进行了比较,我看到的唯一区别是您的上下文与我的上下文不同。

PendingIntent resultPendingIntent =
    PendingIntent.getActivity(
            getBaseContext(),
            0,
            resultIntent,
            PendingIntent.FLAG_UPDATE_CURRENT);

您是否可以尝试将getBaseContext()替换为来自FirebaseMessagingService的上下文? FirebaseMessagingService扩展Service,其中包含Context