12

It's mine BroadcastReciever class. The class working on Boot phone status.

Code ;

public class BroadCastRecieverBoot extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent ıntent) {
        if(Intent.ACTION_BOOT_COMPLETED.equals(ıntent.getAction()))
        {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                context.startForegroundService(new Intent(context, MyService.class));
                context.startForegroundService(new Intent(context, GPSTracker.class));
            } else {
                context.startService(new Intent(context, MyService.class));
                context.startService(new Intent(context, GPSTracker.class));
            }
        }
    }
}

I get This Error ;

     android.app.RemoteServiceException: Context.startForegroundService() did not then call Service.startForeground()


    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1792)

at android.os.Handler.dispatchMessage(Handler.java:106)                                            

        at android.os.Looper.loop(Looper.java:164)                                                   

        at android.app.ActivityThread.main(ActivityThread.java:6523)                                        

        at java.lang.reflect.Method.invoke(Native Method)                                                   

        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)

        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:857)

It doesn't work on Android Oreo now. I don't know what is the mistake of that.

Somomo1q
  • 655
  • 2
  • 10
  • 19
  • https://stackoverflow.com/questions/44425584/context-startforegroundservice-did-not-then-call-service-startforeground – Crammeur Aug 01 '18 at 16:14
  • Possible duplicate of [Context.startForegroundService() did not then call Service.startForeground()](https://stackoverflow.com/questions/44425584/context-startforegroundservice-did-not-then-call-service-startforeground) – Avinash Kumar Aug 08 '18 at 06:10
  • Check out here! [Context.startForegroundService() did not then call Service.startForeground()](https://stackoverflow.com/a/58528446/9636618) – Sepehr Oct 24 '19 at 08:54
  • Finally the issue is solved for our application https://stackoverflow.com/a/72754189/12228079 – Kunal Kalwar Jul 02 '22 at 11:44

1 Answers1

18

According to official document of Android 8.0 Background Execution Limits

Android 8.0 introduces the new method startForegroundService() to start a new service in the foreground. After the system has created the service, the app has five seconds to call the service's startForeground() method to show the new service's user-visible notification. If the app does not call startForeground() within the time limit, the system stops the service and declares the app to be ANR.

So, make sure you have started ongoing notification by calling startForeground (int id, Notification notification) in the onCreate() method of your service.

Note: Apps targeting API Build.VERSION_CODES.P or later must request the permission Manifest.permission.FOREGROUND_SERVICE in order to use this API.

Priyank Patel
  • 12,244
  • 8
  • 65
  • 85