我希望在推送通知消息被点击时打开特定的片段。目前,当通知到达时,片段是打开的。但我想在通知消息被点击时打开该片段,而不是在消息到达时打开。
这是我的sendNotification()方法:
private void sendNotification(String msg) {
mNotificationManager = (NotificationManager) this
.getSystemService(Context.NOTIFICATION_SERVICE);
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("data", "fromoutside");
getApplicationContext().startActivity(intent);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, 0);
NotificationCompat.Builder mBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(this)
.setSmallIcon(getNotificationIcon())
.setContentTitle("Telepoh")
.setStyle(new NotificationCompat.BigTextStyle().bigText(msg))
.setContentText(msg)
.setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE);
mBuilder.setContentIntent(contentIntent);
mBuilder.getNotification().flags |= Notification.FLAG_AUTO_CANCEL;
mBuilder.setAutoCancel(true);
mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
}
这是我在MainActivity中重写的onNewIntent()方法,用于打开片段:
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Fragment fragment = new NotificationActivity();
getSupportFragmentManager().beginTransaction().replace(R.id.container, fragment).addToBackStack(null).commit();
}
我的问题是,我希望在点击推送通知消息时打开此片段,但在我的情况下,当推送通知消息到达时,该片段已经打开了。
sendNotification()
方法中为意图添加一个动作(确保它是唯一的)。然后,在onNewIntent()
中获取动作,仅在正确的意图到达时打开片段。 - AbbasAndroidManifest.xml
。 - Abbas