将通知列表中的默认样式更改为BigTextStyle

时间:2013-09-14 20:14:45

标签: android push-notification parse-platform

我有一个方法,通过Parse API从推送通知接收文本,并将其打包到通知对象中。很标准的东西。我的问题是我正在尝试使用BigTextStyle在列表中显示我的通知,但它拒绝这样做,并且只显示一行文本而双指手势不会导致它扩展。

但是,如果我点击通知,打开应用程序,然后返回通知列表,它将显示在BigTextStyle中并响应手势。所以,我的猜测是,以某种方式点击通知是激活它并允许BigTextStyle代码启动。

我喜欢点击通知会打开应用,但我不想强迫我的用户打开应用,然后再次关闭它以查看我的消息的全文。那么有没有一种方法可以让我从一开始就以BigTextStyle格式显示通知,或者让它首先点击“激活”通知,允许看到完整的消息文本,然后再打开第二次应用程序?任何帮助将不胜感激。

以下是我的通知方法代码:

    public void receiveNotification() {


    NotificationCompat.BigTextStyle bts = new NotificationCompat.BigTextStyle();
    bts.bigText(SplashActivity.globalDataString);
    bts.setSummaryText("Tap to open app, swipe to dismiss message");

    NotificationCompat.Builder m = new NotificationCompat.Builder(this);
    m.setContentTitle("New Push Notification")
        .setContentText(SplashActivity.globalDataString)
        .setSmallIcon(R.drawable.app_icon)
        .setStyle(bts)
        .build();

    Intent openApp = new Intent(this, MenuActivity.class);

    // This ensures that navigating backward from the Activity leads out of
    // the application to the Home screen.
    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
    // Adds the back stack for the Intent (but not the Intent itself)
    stackBuilder.addParentStack(MenuActivity.class);
    // Adds the Intent that starts the Activity to the top of the stack
    stackBuilder.addNextIntent(openApp);

    PendingIntent resultPendingIntent =
            stackBuilder.getPendingIntent(
                0,
                PendingIntent.FLAG_UPDATE_CURRENT
            );
    m.setContentIntent(resultPendingIntent);
    NotificationManager mNotificationManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    // mId allows you to update the notification later on.
    mNotificationManager.notify(pushMessageID, m.build());
    pushMessageID++;

    //reset notification
    flag1 = false;


}

编辑:我认为我的问题在于我从哪里调用了我的receiveNotification()方法。现在我已经在我的应用程序的启动活动的onCreate()方法中使用它,这回顾起来没什么意义。我应该把它放在我的broadcastReceiver课程中,还是有更好的地方把它放进去?

1 个答案:

答案 0 :(得分:0)

是的,通知的创建和显示通常在广播接收器中完成,或者在广播接收器启动的意图服务中完成。只有当用户点击通知时,才会启动相关活动。您可以查看Google的客户端代码示例here