点击通知后,我尝试启动新活动,而不是MainActivity。单击通知后,它总是启动mainactivity。请帮助我
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this);
notificationBuilder.setContentTitle("NOTIFICATION");
notificationBuilder.setContentText(remoteMessage.getNotification().getBody());
notificationBuilder.setAutoCancel(true);
notificationBuilder.setSmallIcon(R.drawable.ic_launcher_foreground);
notificationBuilder.setContentIntent(pendingIntent);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, notificationBuilder.build());
}
答案 0 :(得分:0)
根据文档:https://developer.android.com/training/notify-user/navigation#java
您可以通过调用getActivity()创建PendingIntent,但还应确保已在清单中定义了适当的任务选项。
1。在清单中,将以下属性添加到元素。 android:taskAffinity =“” 将此属性与将在代码中使用的FLAG_ACTIVITY_NEW_TASK标志结合使用,将此属性设置为空白可确保此活动不会进入应用程序的默认任务。具有应用程序默认关联性的所有现有任务均不会受到影响。 android:excludeFromRecents =“ true” 从“最新记录”中排除新任务,以使用户不会意外地导航到该任务。 例如:
<activity
android:name=".ResultActivity"
android:launchMode="singleTask"
android:taskAffinity=""
android:excludeFromRecents="true">
</activity>
构建并发布通知: 创建一个启动活动的意图。 通过调用带有标志FLAG_ACTIVITY_NEW_TASK和FLAG_ACTIVITY_CLEAR_TASK的setFlags(),将“活动”设置为开始一个新的空任务。 通过调用getActivity()创建一个PendingIntent。 例如:
Intent notifyIntent = new Intent(this, ResultActivity.class);
// Set the Activity to start in a new, empty task
notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TASK);
// Create the PendingIntent
PendingIntent notifyPendingIntent = PendingIntent.getActivity(
this, 0, notifyIntent, PendingIntent.FLAG_UPDATE_CURRENT
);
然后您可以像往常一样将PendingIntent传递给通知:
NotificationCompat.Builder builder = new NotificationCompat.Builder(this,
CHANNEL_ID);
builder.setContentIntent(notifyPendingIntent);
//remaining code
NotificationManagerCompat notificationManager =
NotificationManagerCompat.from(this);
notificationManager.notify(NOTIFICATION_ID, builder.build());
有关更多信息,您可以参考上面的链接或以下链接:Notification click: activity already open