Search code examples
androidbroadcastreceiveralarmmanagerandroid-pendingintentintentservice

My AlarmManager, BroadcastReceiver and Service doesn't start


I can't seem these to get up and running:

    public class BackgroundSyncService extends IntentService {

    public BackgroundSyncService() {
        super("SchedulingService");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        Log.i("asd-service", "lol");

        BackgroundSyncBroadcastReceiver.completeWakefulIntent(intent);
    }
}

Second class:

    public class BackgroundSyncBroadcastReceiver extends WakefulBroadcastReceiver {

    private AlarmManager alarmManager;
    private PendingIntent alarmIntent;

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

        Intent service = new Intent(context, BackgroundSyncService.class);
        startWakefulService(context, service);
    }

    public void setAlarm(Context context){

        alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(context, BackgroundSyncBroadcastReceiver.class);
        alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);

        alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME,
                0, 5000, alarmIntent);

        ComponentName receiver = new ComponentName(context, BackgroundSyncBroadcastReceiver.class);
        PackageManager pm = context.getPackageManager();

        pm.setComponentEnabledSetting(receiver,
                PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
                PackageManager.DONT_KILL_APP);
    }
}

Third class:

public class BackgroundSyncBootReceiver extends BroadcastReceiver {

BackgroundSyncBroadcastReceiver service = new BackgroundSyncBroadcastReceiver();

@Override
public void onReceive(Context context, Intent intent) {
    if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){
        service.setAlarm(context);
    }
}

}

Manifest.xml:

<receiver android:name=".BackgroundSyncBroadcastReceiver"/>

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

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

Solution

  • So, yeah, I forgot to start it from the acivity...

     BackgroundSyncBroadcastReceiver service = new BackgroundSyncBroadcastReceiver();
    service.setAlarm(this);
    

    Stupid mistake.