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

时间:2015-08-20 12:03:16

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

我的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);

我不清楚的原因是,如果应用未运行,应用程序会在主要活动上启动。我想要的是它在用户点击通知之前关闭。这有可能吗?有办法吗?

由于 的Davide

1 个答案:

答案 0 :(得分:0)

  

我想要的是,在用户点击通知之前,它已关闭。

应该可以。不要给你的“主要活动”布局,做你的工作来显示通知,并将一个Intent for onClick通知动作放入 NotificationBuilder。之后直接关闭活动。 用另一个活动抓住这个意图(换另一个活动) 活动类进入意图),即具有布局。

编辑:

您还可以将透明应用主题应用于主要活动,以避免 突然出现黑屏一段时间。

new { C1 = 1, C2 = 2, C3 = 3}.

在清单中使用它:

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