后台服务无法正常工作应用在Android 8.0.1中崩溃

时间:2018-12-01 06:51:46

标签: broadcast android-8.0-oreo background-service android-jobscheduler

这是我的接收器课程

公共类LocationAlarmReceiver扩展了BroadcastReceiver {     私有静态最终String TAG =“ LocationAlarmReceiver”;

@Override
public void onReceive(Context context, Intent intent) {
    if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED &&
            ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
        if (AppClass.networkConnectivity.isNetworkAvailable()) {
            if (AppClass.isUserLoggedIn()) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                  context.startForegroundService(new Intent(context, UpdateLatLngBackgroundService.class));
                } else {
                    context.startService(new Intent(context, UpdateLatLngBackgroundService.class));
                }
            }
        }
    }
}

}

startForeground的错误通知:java.lang.RuntimeException:服务通知的无效通道: 异常即将到来

2 个答案:

答案 0 :(得分:0)

如果要通过使用startForegroundService启动后台服务

它将被视为前景服务。对于前景服务,您必须创建要显示的通知。 see for more detiails

在从oreo(8.0)开始创建通知时,您必须创建一个频道并向NotificationManager注册。 More details how to create notification channel

答案 1 :(得分:0)

确保您添加了属性-> name =“。您在其中创建通道的类的名称。

清单文件中的内部标签。