简体   繁体   中英

how can I autostart my app in android after reboot?

I have used BootComplete and allow permission and it still cant autostart,then I try to use wake lock but it cannot work. Also, I try to make it as a service but the service does not pop up in my phone.Is there anything I missed?

       public class BootComplete extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {

{
            // This is the Intent to deliver to our service.
            Intent serviceIntent = new Intent(context, AutoStartUp.class);
            context.startService(serviceIntent);

        }
    }

public class AutoStartUp extends Service {

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {

        super.onCreate();
        Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
        // do something when the service is created
    }

}

In my manifest file:

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

 <service android:name=".SimpleWakefulReceiver">
            <intent-filter>
                <action android:name="com.example.SimpleWakefulReceiver"/>
            </intent-filter>
        </service>

        <receiver
            android:name=".MainActivity$BootComplete"
            android:enabled="true"
            android:exported="false">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>

        <service android:name=".AutoStartUp">
        </service>

Do whatever you intend in onReceive -

public class BootupReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {

    try {
        Thread.sleep(5000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    Log.e("BOOTUP", "received notification ......................");
    if(intent.getAction().equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED))
    {
        Log.e("BOOTUP","RECEIVED BOOT NOTIFICATION ........");
        Intent start_service = new Intent(context,MainService.class);
        context.startService(start_service);
    }
}

in the Manifest add-

<receiver
        android:name=".AutoStart"
        android:enabled="true"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>

add permission-

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

Also you need to launch your application from activity atleast once and your block should be outside block in manifest

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM