TL; DR;
Вам нужно будет создать Сервис , который периодически проверяет, является ли передний план Activity
и принадлежит ли он com.facebook.katana
с ActivityManager .
Если это так, запустите свой шкафчик Activity
.
Ваш код в порядке, просто поместите его в службу, которую я описал выше.
Обратите внимание, что если вы нацеливаетесь на Oreo +, вам придется сделать это в качестве службы переднего плана.
LR
Итак, в Androidесли вы хотите периодически выполнять работу, не располагая свое приложение в верхней части экрана (что означает, что ваше приложение находится в фоновом режиме или даже не запущено), у вас есть несколько вариантов, это называется планирование задач .
Опция, которую я вам здесь предоставляю, - это Service
, по нескольким причинам вы можете выяснить, прочитав документацию, которую я каждый раз связывал.
Для этого создайте Сервискак это:
class ForegroundScanService : Service() {
val handler = Handler(Looper.getMainLooper())
override fun onBind(intent: Intent?): IBinder? {
return null
}
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
startForeground(1, createNotification())
checkApp()
// Ended
return START_STICKY
}
fun checkApp() {
// Detect if the target app is on top, if yes invoke your app with an intent if it hasn't been done already
if(appIsDetected()) {
startYourApp()
}
// Ask the system to restart us, there are many ways to do this, each one will impact the battery in a different way
handler.postDelayed(object: Runnable() {
override fun run() {
checkApp()
}
}, 5000);
}
}
Затем объявите это в своем манифесте и запустите его из активности вашего приложения,Поскольку служба будет работать и постоянно работать, «лучшим» способом будет использование ForegroundService.Если вы этого не сделаете и решите использовать WorkManager или AlarmManager или что-то еще, это лучше для батареи, но ограничено по времени перезапуска.
Надеюсь, это поможет вам, даже если реализация не та, которую вы выберете,чтобы понять, как это работает.
Кстати, вы можете найти документацию по Обработчику здесь