简体   繁体   中英

App Service won't Start after reboot by using BroadCastReceiver

I want my service to be started when android is rebooted. I used BroadcastReceiver to do so.

public class autostart extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    MyService1 mYourService = new MyService1();
    MainActivity.instance_main.showToast("BroadCast Received...................");
    Intent mServiceIntent = new Intent(MainActivity.instance_main, mYourService.getClass());
    if (!MainActivity.instance_main.isMyServiceRunning(mYourService.getClass())) {
        MainActivity.instance_main.startService(mServiceIntent);
        MainActivity.instance_main.showToast("Restarted...................");
    }
    else {
        MainActivity.instance_main.showToast("already running..................");
    }
  }
}

Receiver in Android Manifest

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

Permissions defined

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

Battery optimization ignore permission also requested in OnCreate()

Intent intent=new Intent();
intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
intent.setData(Uri.parse("package:"+MainActivity.instance_main.getPackageName()));
MainActivity.instance_main.startActivity(intent);

But it won't work. Service won't start on reboot. Kindly Suggest me solution.

WE need to register the receiver. Add the following code to OnCreate()

IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
    filter.addAction(Intent.ACTION_SCREEN_OFF);
    BroadcastReceiver mService=new Autostart();
    registerReceiver(mService,filter);

However after reboot it wont automatically hit.

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