我有一个方法,通过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课程中,还是有更好的地方把它放进去?
答案 0 :(得分:0)
是的,通知的创建和显示通常在广播接收器中完成,或者在广播接收器启动的意图服务中完成。只有当用户点击通知时,才会启动相关活动。您可以查看Google的客户端代码示例here。