如何使用Parse库将大视图样式应用于通知

这个库很完美,但我有一个疑问。

当我向超过两行的用户发送消息时,用户无法在通知区域中看到所有消息。

但我知道ANDROID可以做到

http://developer.android.com/guide/topics/ui/notifiers/notifications.html#ApplyStyle 。 如何通过parse.com进行通知?

查看图像以解释我的问题

Image1 http://gorio.eng.br/parse1.png

Image2 http://gorio.eng.br/parse2.png

  • 如何通过单击通知来执行方法
  • 使用RemoteViews的Android 5+自定义通知XML布局,为ImageButton设置正确的图标色调
  • 如何取消其他应用程序的持续通知?
  • 不可移动的通知
  • 实现扩展和折叠通知android
  • Android:如果从Recent Task启动应用程序,则Activity正在使用旧意图
  • Android通知应用
  • 如何在Android 5(Lollipop)中禁止锁定屏幕上的通知,但是让它在通知区域?
  • 这是使用Notification.BigTextStyle的示例。

      final String someLongText = "fkdljfdldkfj;ldaksjfkladj;flja;lkjdfljadslfjaddfdsfafjdfad" + "fdl;akjf;lkdf;lkaj;flkjda;lkfjadljflk;adsjfladjflk;dfjlkdjflakdfjdaffjdlfjdjjj" + "adjflkjadlkfjad;lkfjad;sljf;ladkjajlkfjad;lksfjl;akdjf;lkdsajf;lkdjfkadj;flkad" + "jf;lkadjfkldas;lkfja;dljf;lkdasjf;lkadjs;lfjas;ldkfj;lkadsjfl;kadljfl;kasdjf;l" + "jdlskfjklda;fjadslkfj;sdalkfj;ladjf;lajdl;fkajld;kfjlajfl;adjfl;kajdl;fjadl;kfj;"; final Notification.Builder builder = new Notification.Builder(this); builder.setStyle(new Notification.BigTextStyle(builder) .bigText(someLongText) .setBigContentTitle("Big title") .setSummaryText("Big summary")) .setContentTitle("Title") .setContentText("Summary") .setSmallIcon(android.R.drawable.sym_def_app_icon); final NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); nm.notify(0, builder.build()); 

    例

     Bitmap icon1 = BitmapFactory.decodeResource(getResources(), R.drawable.gorio); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder( getApplicationContext()).setAutoCancel(true) .setContentTitle("Exemplo 1") .setSmallIcon(R.drawable.gorio) .setLargeIcon(icon1).setContentText("Hello World!"); NotificationCompat.BigTextStyle bigText = new NotificationCompat.BigTextStyle(); bigText.bigText(msg); bigText.setBigContentTitle("GORIO Engenharia"); bigText.setSummaryText("Por: GORIO Engenharia"); mBuilder.setStyle(bigText); mBuilder.setPriority(NotificationCompat.PRIORITY_MAX); // Creates an explicit intent for an Activity in your app Intent resultIntent = new Intent(getApplicationContext(), MainActivity.class); // The stack builder object will contain an artificial back // stack for // the // started Activity. // getApplicationContext() ensures that navigating backward from // the Activity leads out of // your application to the Home screen. TaskStackBuilder stackBuilder = TaskStackBuilder .create(getApplicationContext()); // Adds the back stack for the Intent (but not the Intent // itself) stackBuilder.addParentStack(MainActivity.class); // Adds the Intent that starts the Activity to the top of the // stack stackBuilder.addNextIntent(resultIntent); PendingIntent resultPendingIntent = stackBuilder .getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); mBuilder.setContentIntent(resultPendingIntent); NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); // mId allows you to update the notification later on. mNotificationManager.notify(100, mBuilder.build()); 

    此代码段显示了如何构造Builder对象 。 它将大视图的样式设置为大文本 ,并将其内容设置为提醒消息。

     String msg="This is Big style notification builder.This is Big style notification builder.This is Big style notification builder.This is Big style notification builder.This is Big style notification builder.This is Big style notification builder.This is Big style notification builder.This is Big style notification builder.This is Big style notification builder.This is Big style notification builder." // Constructs the Builder object. NotificationCompat.Builder builder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.ic_stat_notification) .setContentTitle(getString(R.string.notification)) .setContentText(getString(R.string.ping)) .setDefaults(Notification.DEFAULT_ALL) // requires VIBRATE permission .setStyle(new NotificationCompat.BigTextStyle().bigText(msg)) final NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); nm.notify(0, builder.build()); 

    有关更多信息,请访问: http : //developer.android.com/training/notify-user/expanded.html

    这里我附上了一个截图,第一个屏幕内容是post的标题,当我们点击应用名称右侧的向下箭头时,它会导致第二个截图,即推送通知的自定义布局。以下是示例布局我为我设计的。

     < ?xml version="1.0" encoding="utf-8"?>        

    使用自定义布局创建通知的方法,

     public static void createNotification(String title, String body,String image_url, Context context, int notificationsId, String single_id) { Intent notificationIntent; long when = System.currentTimeMillis(); int id = (int) System.currentTimeMillis(); Bitmap bitmap = getBitmapFromURL(image_url); NotificationCompat.BigPictureStyle notifystyle = new NotificationCompat.BigPictureStyle(); notifystyle.bigPicture(bitmap); RemoteViews contentView = new RemoteViews(context.getPackageName(), R.layout.custom_notification_layout); contentView.setImageViewBitmap(R.id.image, bitmap); contentView.setTextViewText(R.id.title, body); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context) .setSmallIcon(R.drawable.ic_launcher) .setStyle(notifystyle) .setCustomBigContentView(contentView) .setContentText(body); NotificationManager mNotificationManager = (NotificationManager) context .getSystemService(Context.NOTIFICATION_SERVICE); notificationIntent = new Intent(context, SinglePost.class); notificationIntent.putExtra("single_id",single_id); notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); PendingIntent contentIntent = PendingIntent.getActivity(context, id, notificationIntent, 0); Notification notification = mBuilder.build(); notification.contentIntent = contentIntent; notification.flags |= Notification.FLAG_AUTO_CANCEL; notification.defaults |= Notification.DEFAULT_SOUND; notification.defaults |= Notification.DEFAULT_VIBRATE; mNotificationManager.notify(notificationsId, notification); } public static Bitmap getBitmapFromURL(String strURL) { try { URL url = new URL(strURL); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoInput(true); connection.connect(); InputStream input = connection.getInputStream(); Bitmap myBitmap = BitmapFactory.decodeStream(input); return myBitmap; } catch (IOException e) { e.printStackTrace(); return null; } } 

    在此处输入图像描述

    在此处输入图像描述

     final String someLongText = "......"; final Notification.Builder builder = new Notification.Builder(this); builder.setStyle(new Notification.BigTextStyle(builder) .bigText(someLongText) .setBigContentTitle("Big title") .setSummaryText("Big summary")) .setContentTitle("Title") .setContentText("Summary"); final NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); nm.notify(0, builder.build()); 

    你设定

     String en_alert ,th_alert ,en_title,th_title ,id; int noti_all, noti_1, noti_2, noti_3, noti_4 = 0, Langage; Intent intent = new Intent(context, ReserveStatusActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); intent = new Intent(String.valueOf(PushActivity.class)); intent.putExtra("message", MESSAGE); TaskStackBuilder stackBuilder = TaskStackBuilder.create(context); stackBuilder.addParentStack(PushActivity.class); stackBuilder.addNextIntent(intent); // PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); // android.support.v4.app.NotificationCompat.BigTextStyle bigStyle = new NotificationCompat.BigTextStyle(); // bigStyle.bigText((CharSequence) context); notification = new NotificationCompat.Builder(context) .setSmallIcon(R.mipmap.ic_launcher) .setContentTitle(th_title ) // th_title >>> String = th_title .setContentText(th_alert) // th_alert>>> String = th_title .setAutoCancel(true) //.setStyle(new Notification.BigTextStyle().bigText(th_alert) .setStyle(new NotificationCompat.BigTextStyle().bigText(th_title)) .setStyle(new NotificationCompat.BigTextStyle().bigText(th_alert)) .setContentIntent(pendingIntent) .setNumber(++numMessages) .build(); notification.sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); notificationManager.notify(1000, notification); 

    Facebook facebook.com/PongLoveWii

    您需要覆盖ParsePushBroadcastReceiver子类的方法getNotification以及上面有很多答案,告诉您如何在通知上设置大内容视图。

    您可以使用大文本样式构建通知尝试此代码

      Intent intent = new Intent(this, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent, PendingIntent.FLAG_ONE_SHOT); Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.mipmap.ic_launcher) .setContentTitle(title) .setContentText(messageBody) .setAutoCancel(true) .setSound(defaultSoundUri) .setContentIntent(pendingIntent); NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(id /* ID of notification */, notificationBuilder.build());