Я знаю, что раньше задавали много подобных вопросов, но я не мог заставить его работать, какое бы решение я ни пробовал.
У меня есть код широковещательного приемника, подобный следующему.
class OnBootBroadcast : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
logD("onReceive() started -> intent action: [${intent?.action}]")
// this is only to test if on boot broadcast is working
context?.let {
val i = Intent()
i.setClass(it, MainActivity::class.java)
i.flags = Intent.FLAG_ACTIVITY_NEW_TASK;
it.startActivity(i);
}
// tried to test by adding notification as well, didn't show
// do stuff here
}
}
Мой файл манифеста похож на
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application
android:name=".CustomApplication"
android:allowBackup="true"
android:fullBackupContent="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".view.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".broadcast.NotificationBroadcast" />
<receiver
android:name=".broadcast.OnBootBroadcast"
android:enabled="true" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
<provider
android:name="androidx.work.impl.WorkManagerInitializer"
android:authorities="${applicationId}.workmanager-init"
tools:node="remove" />
</application>
Я знаю китайские пользовательские ПЗУ, такие как MIUI, убивающие фоновые службы приложений. Чтобы справиться с этим, я попробовал следующее.
Включите автозапуск в разделе «Безопасность» ›Управление приложениями. Эта исправленная проблема, когда фоновая служба диспетчера работ не работала, когда приложение было закрыто смахиванием. Но проблему с трансляцией не устранили.
Установите «Без ограничений» в настройках ›Батарея и производительность› Экономия заряда в приложении.
Я пытаюсь использовать трансляцию при загрузке, чтобы повторно добавить некоторые диспетчеры сигналов тревоги для точных уведомлений по времени. Если есть какая-то альтернатива, которая может достичь этого, эта информация также будет оценена.
Заранее спасибо :)