配置前台服务报错:Permission Denial: startForeground & Bad notification for startForeground

在配置前台服务时,笔者遇到了两个报错,首先遇到的错误如下:

Permission Denial: startForeground

这是由于配置前台服务时,首先需要给予权限,在AndroidManifest中插入如下语句:

此时便分配了前台服务的权限,但直接运行有可能会出现第二个错误:

Bad notification for startForeground

这是因为Android 8.0之后的版本对通知做了细分,引进了channel,而这会影响普通通知与前台服务通知,而我们遇到的就是后者的问题。此时需要在代码中配置NotificationChannel,并在通知中设置channel的值。具体代码如下:

String CHANNEL_ONE_ID = "example";
String CHANNEL_ONE_NAME = "Channel One";
NotificationChannel notificationChannel = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
            notificationChannel = new NotificationChannel(CHANNEL_ONE_ID,
                    CHANNEL_ONE_NAME, NotificationManager.IMPORTANCE_HIGH);
    notificationChannel.enableLights(true);
    notificationChannel.setLightColor(Color.RED);
    notificationChannel.setShowBadge(true);
    notificationChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);
    NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    manager.createNotificationChannel(notificationChannel);
}

Notification notification=new NotificationCompat.Builder(this).setChannelId(CHANNEL_ONE_ID);

最后一行示例了设置通知channel的操作。

你可能感兴趣的:(android)