Android中的通知栏中无法显示通知文字?

时间:2016-07-26 11:16:32

标签: android push-notification google-cloud-messaging

我在我的应用中使用GCM推送通知。但我没有收到短信和图标。它只显示白色背景。

这是我们在我的应用中接收通知的代码

 public void onMessageReceived(String from, Bundle data) {

        //Getting the message from the bundle
        String message = data.getString("message");
        //Displaying a notiffication with the message
        String body = null;
        String title = null;
        try{
            String notificationJSONString = data.getString("notification");
            //then you can parse the notificationJSONString into a JSON object
            JSONObject notificationJSON = new JSONObject(notificationJSONString );
             body = notificationJSON.getString("body");
            title = notificationJSON.getString("title");

        }catch (Exception e){
            e.printStackTrace();
        }
       // sendNotification(message);
        sendNotification(body,title);
    }

    //This method is generating a notification and displaying the notification
    private void sendNotification(String message,String title) {
        Intent intent = new Intent(this, NavigationDrawerActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        intent.putExtra("firsttab","notify");
        int requestCode = 0;
        PendingIntent pendingIntent = PendingIntent.getActivity(this, requestCode, intent, PendingIntent.FLAG_ONE_SHOT);
        Uri sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();
        NotificationCompat.Builder noBuilder = new NotificationCompat.Builder(this)
               // .setSmallIcon(R.mipmap.philips_launcher)
                .setSmallIcon( getNotificationIcon())
                .setContentTitle(title)
                .setContentText(message)
                .setAutoCancel(true)
                .setSound(sound)
                .setColor(Color.parseColor("#0089C4"))
                .setStyle(inboxStyle)
               // .setStyle(new NotificationCompat.BigTextStyle().bigText(message))
                .setContentIntent(pendingIntent);
      /*  if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            builder.setSmallIcon(R.drawable.icon_transperent);
        } else {
            builder.setSmallIcon(R.drawable.icon);
        }*/

        NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(0, noBuilder.build()); //0 = ID of notification
    }

    private int getNotificationIcon() {
        boolean useWhiteIcon = (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP);
        return useWhiteIcon ? R.drawable.not_icon : R.mipmap.philips_launcher;
    } 

请帮我解决这个问题。在高级方面,我们将不胜感激。 我应用了stackoverflow中给出的大量代码,但仍面临同样的问题。

3 个答案:

答案 0 :(得分:0)

在消息字符串中,您将收到通知,无需进一步解析  String message = data.getString(" message"); 如果该消息没有标题,您可以在您的应用程序的基础上给出标题

答案 1 :(得分:0)

更改此代码并尝试使用我希望它能正常工作。 您最后错过了.Build();

自:

NotificationCompat.Builder noBuilder = new NotificationCompat.Builder(this)
           // .setSmallIcon(R.mipmap.philips_launcher)
            .setSmallIcon( getNotificationIcon())
            .setContentTitle(title)
            .setContentText(message)
            .setAutoCancel(true)
            .setSound(sound)
            .setColor(Color.parseColor("#0089C4"))
            .setStyle(inboxStyle)
           // .setStyle(new NotificationCompat.BigTextStyle().bigText(message))
            .setContentIntent(pendingIntent);

要:

  NotificationCompat.Builder noBuilder = new NotificationCompat.Builder(this)
           // .setSmallIcon(R.mipmap.philips_launcher)
            .setSmallIcon( getNotificationIcon())
            .setContentTitle(title)
            .setContentText(message)
            .setAutoCancel(true)
            .setSound(sound)
            .setColor(Color.parseColor("#0089C4"))
            .setStyle(inboxStyle)
           // .setStyle(new NotificationCompat.BigTextStyle().bigText(message))
            .setContentIntent(pendingIntent).build();

答案 2 :(得分:0)

通知消息的白色背景问题已知且正在修复,修复程序应尽快发布。另一个选择是使用数据消息并在onMessageReceived回调中自己管理通知的创建。