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

时间:2014-02-27 20:30:12

标签: android notifications parse-platform

这个库工作得很好,但我有一个疑问。

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

但我知道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

8 个答案:

答案 0 :(得分:22)

以下是使用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());

Example

答案 1 :(得分:16)

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());

答案 2 :(得分:5)

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

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

答案 3 :(得分:2)

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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
card_view:cardCornerRadius="5dp"
card_view:cardUseCompatPadding="true">

<LinearLayout
android:layout_width="match_parent"
android:orientation="horizontal"
android:background="#80000000"
android:layout_height="wrap_content">

<ImageView
    android:src="@mipmap/ic_launcher"
    android:layout_width="50dp"
    android:layout_height="match_parent"
    android:padding="10dp"
    android:layout_marginLeft="5dp"
    android:background="@null"
    android:layout_gravity="center_vertical|center_horizontal"
    android:scaleType="centerCrop"/>
<TextView
    android:id="@+id/title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:minHeight="48dp"
    android:paddingBottom="16dp"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:paddingTop="16dp"
    android:background="@android:color/transparent"
    android:textColor="@android:color/white"
    tools:text="Test"/>
 </LinearLayout>
 <ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:adjustViewBounds="true"
android:contentDescription="@null"
android:scaleType="centerCrop"
android:src="@drawable/placeholder"/>
</LinearLayout>

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

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;
}
}

enter image description here

enter image description here

答案 4 :(得分:1)

dylib

答案 5 :(得分:1)

你设置

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

答案 6 :(得分:0)

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

答案 7 :(得分:0)

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

 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());