Android 推送通知。应用程序在主 Activity 上启动

Android push notification. App started on main Activity

我的 Android 应用程序通过 GCM 侦听 推送通知。 在消息中,我放置了一个 json 对象,其中包含一些要在应用程序中处理的信息,因此我可以基于此开始不同的活动。 这里是启动 PendingIntent 的代码:

@Override
    public void onMessageReceived(String from, Bundle data) {

...
...
// here i create the pending intent object based on json sent in the notification message from server side
...
...
// add the notification
            NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                    .setSmallIcon(defaultIcon)
                    .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_my_icon))
                    .setContentTitle("My Application")
                    .setContentText(body)
                    .setAutoCancel(true)
                    .setSound(defaultSoundUri)
                    .setVibrate(vibrate)
                    .setContentIntent(pendingIntent);

我不清楚的是,为什么 如果应用不是 运行,应用会在主 activity 上启动。我想要的是在用户单击通知之前它一直关闭。那可能吗?有办法吗?

谢谢 大卫

What i want is that it reamins closed until the user click on the notification.

应该可以。不要给你的 "Main Activity" 布局,做你的工作来显示通知并将 onClick 通知操作的 Intent 放入 通知生成器。之后直接关闭 activity。 用另一个 activity 捕捉这个意图(放另一个 Activity class 入意),即有布局。

编辑:

您还可以将透明应用主题应用到您的主 activity,以避免 弹出几毫秒的黑屏。

  <style name="AppTheme.Transparent">
    <item name="android:windowBackground">@color/transparent</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowShowWallpaper">true</item>
  </style>

在您的清单中使用它:

android:theme="@style/AppTheme.Transparent"