我有一个推送通知的活动。如果活动正在运行后台,我希望通知在前台打开活动(相同的活动,而不是另一个实例)。基本上,活动应该在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
答案 0 :(得分:0)
看起来您在初始化之前将PendingIntent设置为构建器。
答案 1 :(得分:0)
我将您的代码与我的工作代码进行了比较,我看到的唯一区别是您的上下文与我的上下文不同。
PendingIntent resultPendingIntent =
PendingIntent.getActivity(
getBaseContext(),
0,
resultIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
您是否可以尝试将getBaseContext()
替换为来自FirebaseMessagingService
的上下文? FirebaseMessagingService
扩展Service
,其中包含Context
。