There are several issues here.
Firstly, you neglected sending StartMyServiceAtBootReceiver , the component that you expect to receive at boot time, so we cannot comment on whether there are any problems with it.
Secondly, unless something explicitly performed by one of your components (for example, a user launching MainActivity from the main screen), StartMyServiceAtBootReceiver will never be called on Android 3.1+. Make sure you start your activity before trying to restart your computer and see if this helps.
Thirdly, you have implemented the constructor on StartupManager , which is a bad idea. Move this logic to onCreate() .
Fourth, your code is likely to crash in this constructor, since getApplication() will not return a valid value at this point in the code, especially because you were unable to bind the superclass constructor. Again, moving this code to onCreate() will help here.
Fifthly, starting an activity from the onCreate() service (not to mention its constructor) is very unusual and cannot be evaluated by the user. Moreover, if this service does nothing, you can just as easily start this activity with StartMyServiceAtBootReceiver and skip StartupManager completely.
Sixth, you have <intent-filter> elements on your services, as if you expected third-party developers to reference these services. If so, great. If not, remove the <intent-filter> elements and use the explicit Intents in the rest of your application code to reference them (e.g. new Intent(this, StartupManager.class) ), for better security. Or add android:exported="false" to these services, although this is automatic if you remove the <intent-filter> elements.