Java 在android服务中使用startForeground

Java 在android服务中使用startForeground,java,android,Java,Android,我发现了这个问题:在Stackoverflow中,正如它在顶部的命令中所说,通知构造函数和setLastEventInfo是不推荐的。我知道这是一个重复的帖子,但另一个帖子已经4年了,在推荐中没有答案,所以我想我试着再问一次,也许有人可以帮我 代码: 你可以用这个方法。现在有了最新的API版本,您需要为通知设置通道 private static final String NOTIFICATION_CHANNEL_ID ="notification_channel_id"; private sta

我发现了这个问题:在Stackoverflow中,正如它在顶部的命令中所说,通知构造函数和
setLastEventInfo
是不推荐的。我知道这是一个重复的帖子,但另一个帖子已经4年了,在推荐中没有答案,所以我想我试着再问一次,也许有人可以帮我

代码:


你可以用这个方法。现在有了最新的API版本,您需要为通知设置通道

private static final String NOTIFICATION_CHANNEL_ID ="notification_channel_id";
private static final String NOTIFICATION_Service_CHANNEL_ID = "service_channel";
.....
private void startInForeground() {
    int icon = R.mipmap.icon;

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
        icon = R.mipmap.icon_transparent;
    }

    Intent notificationIntent = new Intent(this, CurrentActivity.class);
    PendingIntent pendingIntent=PendingIntent.getActivity(this,0,notificationIntent,0);
    NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
        .setSmallIcon(icon)
        .setContentIntent(pendingIntent)
        .setContentTitle("Service")
        .setContentText("Running...");
    Notification notification=builder.build();
    if(Build.VERSION.SDK_INT>=26) {
        NotificationChannel channel = new NotificationChannel(NOTIFICATION_Service_CHANNEL_ID, "Sync Service", NotificationManager.IMPORTANCE_HIGH);
        channel.setDescription("Service Name");
        NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.createNotificationChannel(channel);

        notification = new Notification.Builder(this,NOTIFICATION_Service_CHANNEL_ID)
            .setContentTitle("Service")
            .setContentText("Running...")
            .setSmallIcon(icon)
            .setContentIntent(pendingIntent)
            .build();
    }
    startForeground(121, notification);
}

你查过我的答案了吗?你的确切问题是什么?你有什么问题需要帮助?我提出了我的问题bold@Sagar我试图使用您的答案,但我在这里得到一个错误
()。setContentTitle(“Title”)
它说无法解决方法您需要用图标替换
,我非常感谢您的帮助:)
private static final String NOTIFICATION_CHANNEL_ID ="notification_channel_id";
private static final String NOTIFICATION_Service_CHANNEL_ID = "service_channel";
.....
private void startInForeground() {
    int icon = R.mipmap.icon;

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
        icon = R.mipmap.icon_transparent;
    }

    Intent notificationIntent = new Intent(this, CurrentActivity.class);
    PendingIntent pendingIntent=PendingIntent.getActivity(this,0,notificationIntent,0);
    NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
        .setSmallIcon(icon)
        .setContentIntent(pendingIntent)
        .setContentTitle("Service")
        .setContentText("Running...");
    Notification notification=builder.build();
    if(Build.VERSION.SDK_INT>=26) {
        NotificationChannel channel = new NotificationChannel(NOTIFICATION_Service_CHANNEL_ID, "Sync Service", NotificationManager.IMPORTANCE_HIGH);
        channel.setDescription("Service Name");
        NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.createNotificationChannel(channel);

        notification = new Notification.Builder(this,NOTIFICATION_Service_CHANNEL_ID)
            .setContentTitle("Service")
            .setContentText("Running...")
            .setSmallIcon(icon)
            .setContentIntent(pendingIntent)
            .build();
    }
    startForeground(121, notification);
}