Lov*_*oid 3 android push-notification android-intent android-pendingintent google-cloud-messaging
我想在点击推送通知消息时打开特定片段。在我的情况下,当通知发生时片段是打开的。但我想在点击通知消息而不是到达消息时打开片段。
这是我的 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() 方法,它在我打开片段的 MainActivity 中覆盖:-
@Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        Fragment fragment = new NotificationActivity();
        getSupportFragmentManager().beginTransaction().replace(R.id.container, fragment).addToBackStack(null).commit();
    }
我的问题是我想在点击推送通知消息时打开这个片段,但在我的情况下,当推送通知消息到达时片段是打开的。
我发现了错误并以自己的方式解决了它:-
像这样更改 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();
                    } 
                }
        }
快乐编码:))
| 归档时间: | 
 | 
| 查看次数: | 4410 次 | 
| 最近记录: |