我想在点击推送通知消息时打开特定 fragment 。在我的例子中,当通知发生时 fragment 是打开的。但我想在点击通知消息而不是到达消息时打开 fragment 。
这是我的 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());
}
这是我的 onNewIntent() 方法,它在我打开 fragment 的 MainActivity 中覆盖:-
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Fragment fragment = new NotificationActivity();
getSupportFragmentManager().beginTransaction().replace(R.id.container, fragment).addToBackStack(null).commit();
}
我的问题是我想在点击推送通知消息时打开这个 fragment ,但在我的例子中,当推送通知消息到达时 fragment 是打开的。
最佳答案
我发现了错误并用我自己的方式解决了它:-
像这样更改 sendNotification() 方法中的标志:-
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra("data", "fromoutside");
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
并在 MainActivity 中更改覆盖方法 onNewIntent() 中的代码,如下所示:-
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if (intent != null) {
String data = intent.getStringExtra("data");
if (data != null) {
Fragment fragment = new NotificationActivity();
getSupportFragmentManager().beginTransaction().replace(R.id.container, fragment).addToBackStack(null).commit();
}
}
}
快乐编码:))
关于android - 如何在点击推送通知消息时打开特定 fragment ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39383157/