自定义通知Remoteviews踩坑

本文探讨了在Android应用中自定义Notification RemoteViews遇到的问题,尤其是在某些机型上无法显示2行文本内容的通知布局。虽然目前找到了临时解决方案,但仍然存在'bad notification posted'的错误,尚未找到彻底解决之道。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
     * 更新通知栏
     */
    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行文本内容的通知布局,特此自定义布局,实现通知。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值