我想在用户点击推送通知时启动活动。它适用于活动A,但不适用于其他活动B,它不能完全发挥作用。活动B发生的情况是,如果应用程序未运行,单击推送通知将正确启动活动B.但是,如果应用程序已在运行,则单击推送通知只需打开当前屏幕。
以下是我设置推送通知的方式:
Intent rewardsIntent = new Intent(this, ActivityRewards.class);
rewardsIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
NotificationUtils.createNotification(this, R.string.reward_notification, getResources().getString(R.string.reward_notification), "You have been rewarded", rewardsIntent);
NotificationUtils中的静态方法创建推送通知:
public static void createNotification(Context context, int notificationId, String title, String text, Intent resultIntent) {
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ico_launcher)
.setContentTitle(title)
.setContentText(text);
PendingIntent resultPendingIntent =
PendingIntent.getActivity(
context,
0,
resultIntent,
PendingIntent.FLAG_UPDATE_CURRENT
);
mBuilder.setContentIntent(resultPendingIntent);
mBuilder.setAutoCancel(true);
mBuilder.setOngoing(true);
NotificationManager mNotificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(notificationId, mBuilder.build());
}
在AndroidManifest.xml中,我将活动声明如下:
<activity android:name=".ActivityRewards"
android:label="@string/my_rewards"
android:exported="true">
</activity>
这让我困惑了好几天。任何帮助将非常感谢。感谢。
答案 0 :(得分:0)
我设法通过为ActivityRewards添加launchMode声明来完成这项工作,如下所示:
<activity android:name=".ActivityRewards"
android:label="@string/my_rewards"
android:launchMode="singleTask"
android:exported="true">