/**
* 更新通知栏
*/
private void updateNotification(String title) {
if (null == mNotificationBuilder) {
mNotificationBuilder = new android.support.v4.app.NotificationCompat.Builder(context);
mNotificationBuilder.setSmallIcon(R.drawable.hro_logo);
mNotificationBuilder.setDefaults(Notification.DEFAULT_LIGHTS);
mNotificationBuilder.setOngoing(false);
mNotificationBuilder.setWhen(System.currentTimeMillis());
PendingIntent intent = PendingIntent.getActivity(context, 0, new Intent(context, LocalAttachmentFragment.class), PendingIntent.FLAG_UPDATE_CURRENT);
mNotificationBuilder.setAutoCancel(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mNotificationBuilder.setFullScreenIntent(intent, false);// 横幅
}
mNotificationBuilder.setContentIntent(intent);
remoteViews = new RemoteViews(context.getPackageName(), R.layout.common_notice_text);
remoteViews.setTextViewText(R.id.item_content_title, context.getResources().getString(R.string.app_name));
SimpleDateFormat format = new SimpleDateFormat("HH:mm");
remoteViews.setTextViewText(R.id.item_content_time, format.format(new Date(System.currentTimeMillis())));
remoteViews.setImageViewResource(R.id.item_content_logo, R.drawable.hro_logo);
remoteViews.setOnClickPendingIntent(R.id.cell_view, intent);
mNotificationBuilder.setContent(remoteViews);
remoteViews.setTextViewText(R.id.item_content_text, title);
//
NotificationManager mManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mManager.notify(1, mNotificationBuilder.build());
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/cell_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:orientation="horizontal">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:id="@+id/item_content_logo"
android:layout_width="@dimen/horizontal_spacing48"
android:layout_height="@dimen/horizontal_spacing48"
android:layout_gravity="center_vertical"
android:layout_marginLeft="@dimen/common_size_10"
android:layout_marginRight="@dimen/common_size_10"
android:scaleType="fitCenter"
android:src="@drawable/hro_logo" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/item_content_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="标题"
style="@style/NotificationTitle" />
<TextView
android:id="@+id/item_content_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginRight="@dimen/common_size_15"
android:text="通知时间"
style="@style/NotificationTitle" />
</LinearLayout>
<TextView
android:id="@+id/item_content_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginRight="@dimen/common_size_15"
android:text="通知内容"
style="@style/NotificationInfo" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
写过简单的通知,也自定义过通知,那是很久以前的事了,本以为自己牢牢的掌握了,
时至今日再次遇到类似的坑,我还是浪费了一些时间
这是可以正常运行的,某些情况下会遇到bad notification posted,暂时没有找到解决方法
之所以自定义通知,是因为有的机型不支持设置2行文本内容的通知布局,特此自定义布局,实现通知。