用户在Android中点击通知时显示应用

时间:2016-08-18 13:40:51

标签: android android-activity notifications google-cloud-messaging

我已经连接到Google Cloud Messaging,并在收到某些内容时显示通知。 我想在用户点击通知时“最大化”我的应用。即显示与我的应用相关的最新活动。或者,如果应用程序尚未启动,我想开始它的主要活动。

如果应用程序已经打开,我必须不创建最后一个活动的新实例。

我怎样才能做到这一点?

我已经看到了很多类似的问题,但所有的答案似乎都想要指定活动类,我不知道,因为我不知道上次显示了哪个活动。

这个看似简单的任务是否有解决方案?

我的代码目前看起来像这样:

        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.icon)
            .setContentTitle("foo")
            .setContentText(message)
            .setAutoCancel(true)
            .setSound(defaultSoundUri)
            .setContentIntent(PendingIntent.getActivity(getApplicationContext(), 0, new Intent(), 0));


    NotificationManager notificationManager =
            (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

    notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());

但它没有用。

1 个答案:

答案 0 :(得分:1)

点击Activity时打开Notification时,只需打开以下Activity。即您的PendingIntent将在Activity

之后打开

请阅读comments中写的所有Activity,以便了解为何创建

public class NotificationHandlerActivity extends AppCompatActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //deep linking - resuming app code
        if (isTaskRoot()) {
            // This Activity is the only Activity, so
            //  the app wasn't running. So start the app from the
            //  beginning (redirect to MainActivity)
        } else {
            // App was already running, so just finish, which will drop the user
            //  in to the activity that was at the top of the task stack
            Intent intent = getIntent();
            Uri data = intent.getData();
            //you can put your extra's if any
            finish();
        }
    }
}