How do I start my app on startup? How do I start my app on startup? android android

How do I start my app on startup?


First, you need the permission in your AndroidManifest.xml:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

Also, in yourAndroidManifest.xml, define your service and listen for the BOOT_COMPLETED action:

<service android:name=".MyService" android:label="My Service">    <intent-filter>        <action android:name="com.myapp.MyService" />    </intent-filter></service><receiver    android:name=".receiver.StartMyServiceAtBootReceiver"    android:label="StartMyServiceAtBootReceiver">    <intent-filter>        <action android:name="android.intent.action.BOOT_COMPLETED" />    </intent-filter></receiver>

Then you need to define the receiver that will get the BOOT_COMPLETED action and start your service.

public class StartMyServiceAtBootReceiver extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {            Intent serviceIntent = new Intent(context, MyService.class);            context.startService(serviceIntent);        }    }}

And now your service should be running when the phone starts up.


This is how to make an activity start running after android device reboot:

Insert this code in your AndroidManifest.xml file, within the <application> element (not within the <activity> element):

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /><receiver    android:enabled="true"    android:exported="true"     android:name="yourpackage.yourActivityRunOnStartup"    android:permission="android.permission.RECEIVE_BOOT_COMPLETED">    <intent-filter>        <action android:name="android.intent.action.BOOT_COMPLETED" />        <action android:name="android.intent.action.QUICKBOOT_POWERON" />        <category android:name="android.intent.category.DEFAULT" />    </intent-filter></receiver>

Then create a new class yourActivityRunOnStartup (matching the android:name specified for the <receiver> element in the manifest):

package yourpackage;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class yourActivityRunOnStartup extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {            Intent i = new Intent(context, MainActivity.class);            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);            context.startActivity(i);        }    }}

Note:The call i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); is important because the activity is launched from a context outside the activity. Without this, the activity will not start.

Also, the values android:enabled, android:exported and android:permission in the <receiver> tag do not seem mandatory. The app receives the event without these values. See the example here.


Listen for the ACTION_BOOT_COMPLETE and do what you need to from there. There is a code snippet here.

Update:

Original link on answer is down, so based on the comments, here it is linked code, because no one would ever miss the code when the links are down.

In AndroidManifest.xml (application-part):

<receiver android:enabled="true" android:name=".BootUpReceiver"        android:permission="android.permission.RECEIVE_BOOT_COMPLETED">        <intent-filter>                <action android:name="android.intent.action.BOOT_COMPLETED" />                <category android:name="android.intent.category.DEFAULT" />        </intent-filter></receiver>

...

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

...

public class BootUpReceiver extends BroadcastReceiver{        @Override        public void onReceive(Context context, Intent intent) {                Intent i = new Intent(context, MyActivity.class);  //MyActivity can be anything which you want to start on bootup...                i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);                context.startActivity(i);          }}

Source: https://web.archive.org/web/20150520124552/http://www.androidsnippets.com/autostart-an-application-at-bootup