Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将通知列表中的默认样式更改为BigTextStyle_Android_Push Notification_Parse Platform - Fatal编程技术网

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

Android 将通知列表中的默认样式更改为BigTextStyle,android,push-notification,parse-platform,Android,Push Notification,Parse Platform,我有一个方法,它通过parseapi从推送通知接收文本,并将其打包到通知对象中。相当标准的东西。我的问题是,我试图使用BigTextStyle在列表中显示我的通知,但它拒绝这样做,并且只显示一行文本,而两个手指的手势不会导致它扩展 但是,如果我点击打开应用程序的通知,然后返回通知列表,它将以BigTextStyle显示,并响应手势。因此,我猜测,不知何故,点击通知就是激活它,并允许BigTextStyle代码启动 我喜欢点击通知打开应用程序,但我不想强迫我的用户打开应用程序,然后再次关闭它以查看

我有一个方法,它通过parseapi从推送通知接收文本,并将其打包到通知对象中。相当标准的东西。我的问题是,我试图使用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类中,还是有更好的位置来放置它?

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

你调用build两次有什么原因吗?因为从Android开发网站复制示例代码时疏忽了。我以前确实注意到了这一点,我试过重新编码,所以只有一个。这似乎没有什么显著的区别。太棒了,谢谢。那么,如果我只是想将代码和调用移动到我的BroadcastReceiver,那么引用应用程序的上下文以替换对“this”的所有不再起作用的调用的最佳方式是什么?@SteveEckert好吧,BroadcastReceive的onReceive方法有一个上下文参数,所以你可以使用它。太棒了。谢谢一旦我积累了足够的rep,我就会对此进行升级:PSorry,但我不知道答案在哪里:将通知列表中的默认样式更改为bigtextstyle我在服务中使用bigtextstyle创建通知,不过,默认情况下,只有在向下滚动通知本身时,才会显示按需扩展的正常通知。