代码之家  ›  专栏  ›  技术社区  ›  narb

oreo-如何自定义前台服务状态栏

  •  0
  • narb  · 技术社区  · 6 年前

    我启动了一个前台服务,显示在android系统电池信息下的状态栏中。

    有没有办法自定义显示的信息(标题、潜台词、图标…)?

    enter image description here

    服务代码:已编辑代码

    @Override
        public void onCreate() {
            context = this.getApplicationContext();
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                Intent notificationIntent = new Intent(context, CallbackTestWidgetService.class);
                PendingIntent pendingIntent =
                        PendingIntent.getActivity(context, 10, notificationIntent, 0);
    
                Notification notification = new Notification.Builder(context, "Test")
                        .setContentTitle("Test")
                        .setContentText("text")
                        .setContentIntent(pendingIntent)
                        .setSmallIcon(R.drawable.test)
                        .setTicker("test")
                        .build();
    
    CharSequence name = "test";
                String description = "test";
                int importance = NotificationManager.IMPORTANCE_DEFAULT;
                NotificationChannel channel = new NotificationChannel("10", name, importance);
                channel.setDescription("test");
                // Register the channel with the system; you can't change the importance
                // or other notification behaviors after this
                NotificationManager notificationManager = getSystemService(NotificationManager.class);
                notificationManager.createNotificationChannel(channel);
    
                startForeground(10, notification);
            }
    
        }
    
    3 回复  |  直到 6 年前
        1
  •  2
  •   ianhanniballake    6 年前

    您看到的是应用程序未发布通知时的默认通知。

    没有通知的原因(尽管你打电话给 startForeground )您的目标是API 26或更高版本,而不是将您的通知与 notification channel 是的。这将导致完全按照该页上的说明删除您的通知:

    注意:如果您针对Android 8(API级别26)并发布通知而不指定通知信道,则不会出现通知,系统会记录错误。

    您必须创建通知通道,然后在生成通知时包含通知通道的ID。

        2
  •  0
  •   Gabe Sechan    6 年前

    你正在生成一个通知以传递到StartForeground。使用createContentView函数,就像您要自定义的普通通知一样。

    请注意,这只适用于较新版本的android,您可能希望使用支持库中的notiicationcompat类来支持特定于版本的api差异,并在几个不同的模拟器api上进行测试。

        3
  •  0
  •   Chunyu Ou    6 年前

    https://stackoverflow.com/users/4080424/narb https://stackoverflow.com/users/1676363/ianhanniballake

    我无法通过调用更改通知内容标题和文本 setContentTitle(CharSequence) setContentText(CharSequence) 是的。 你知道为什么吗?