Alarm Manager is not working in Xiaomi phones

Viewed 1753

I have tried most of the solution provided on StackOverflow and google about AlarmManager for Marshmallow OS. But I didn;t get the solution.

Code:

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

        Intent alarmIntent = new Intent(context, UpdateTables.class);

        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);

        Calendar alarmStartTime = Calendar.getInstance();

        //midnight
        alarmStartTime.set(Calendar.HOUR_OF_DAY, 0);
        alarmStartTime.set(Calendar.MINUTE, 1);
        alarmStartTime.set(Calendar.SECOND, 0);

if (Calendar.getInstance().getTimeInMillis() > alarmStartTime.getTimeInMillis()) {
            Log.i("Current time ", Constants.getDate(Calendar.getInstance().getTimeInMillis(),"yyyy-MM-dd HH:mm:ss.SSS"));
            alarmStartTime.add(Calendar.DATE, 1);
        }

 alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, alarmStartTime.getTimeInMills(), pendingIntent);

BroadcastReceiver

public class UpdateTables extends WakefulBroadcastReceiver {

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

}
}

When I am closing the app then the set alarm is removed from the scheduled alarm list:

 ./adb shell dumpsys alarm 

So I have created the service that calls AlarmManager again onTaskRemoved() from recent apps:

public class myService extends Service {


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

    @Override
    public void onTaskRemoved(Intent rootIntent) {

        setTheTimeToUpdateTables(getApplicationContext());
        super.onTaskRemoved(rootIntent);
    }

}

Solution Tried:

  1. Add the app to the autostart list.
  2. Remove the app from battery saver list.
  3. Use the WakefulBroadcastReceiver instead of BroadCastReciever.
0 Answers
Related