安卓:启动前台无法正确显示通知

2022-09-03 09:50:58

我正在开发一个使用前台服务的应用程序。为此,我从内部调用服务的onStartCommand回调。startForeground(id,Notification)

我使用通知生成器来创建我的通知,但是当我将其传递到start前台时,仅显示我设置的股票代码文本,其他所有内容都变为默认值,即标题显示“正在运行,而我将其设置为” 在线”

还有我在通知中使用setText和setInfo方法设置的任何内容。生成器不会显示,而是在其位置显示默认文本,如“触摸以获取更多信息或停止应用程序”。

以下是相关代码:

服务:

private final int NOTIFICATION_ID=1;

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Toast.makeText(this,"EDI: Core service Started" , Toast.LENGTH_LONG).show();
        startForeground(NOTIFICATION_ID, CoreServiceNotification.getNotification(this, "EDI is online", "Online","Online and running","EDI just started"));
        return super.onStartCommand(intent, flags, startId);
    }

核心服务通知:

public class CoreServiceNotification {

        public static Notification getNotification(Context context,String title,String text,String info,String tickerText){
            Notification.Builder notificationBuilder= new Notification.Builder(context);
            notificationBuilder.setContentTitle(title);
            notificationBuilder.setContentText(text);
            notificationBuilder.setContentInfo(info);
            notificationBuilder.setTicker(tickerText);
            notificationBuilder.setLights(0x00ffff00, 1000, 0);
            return notificationBuilder.build();
        }

    }

结果:enter image description here


答案 1

我认为有必要在创建通知时首先设置小图标。

Notification.Builder notificationBuilder= new Notification.Builder(context);
notificationBuilder.setSmallIcon(R.drawable.yourIcon);
// then set other staff...

这是来自Cousera Android类的另一个简单示例,请单击此处


答案 2