Но для Android Oreo эта опция больше не действительна и вызывает
ошибка при печати вдоль строк «Запрещено выполнение фона».
Из Oreo Пока приложение находится на переднем плане, оно может свободно создавать и запускать как передний, так и фоновый сервисы. Таким образом, 1 возможный подход может заключаться в создании службы переднего плана , которая отслеживает состояние зарядки / отсутствия зарядки с использованием класса BatteryManager
- этот класс передает все сведения о батарее и зарядке в виде залипшего намерения, которое включает в себя состояние зарядки.
val ifilter = IntentFilter(Intent.ACTION_BATTERY_CHANGED)
val batteryStatus = context.registerReceiver(null, ifilter)
val status = batteryStatus?.getIntExtra(BatteryManager.EXTRA_STATUS, -1)
val isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL
Теперь, когда вы знаете, заряжается ваше устройство или нет.
Далее из того же кода класса обслуживания - в зависимости от состояния зарядки - вы можете запустить YourActivity, как показано ниже,
Intent i = new Intent();
i.setClass(this, YourActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
Теперь запуск подобной активности может быть не самым лучшим опытом для пользователя - и, следовательно, вы можете рассмотреть возможность использования системы уведомлений Android для обновления / информирования пользователя о состоянии зарядки