Я использую fcm для push-уведомлений. Когда приходит push-уведомление, мне нужно показать пользователю вид из службы (даже если приложение убито или находится в фоновом режиме), я пытался сделать это в стиле мессенджера Facebook, рисуя оверлеи, у меня уже есть разрешение на создание оверлеев (android.permission.SYSTEM_ALERT_WINDOW), это мой класс обслуживания
package com.radisolutions.radipeople.radihome.services
import android.app.Service
import android.content.Context
import android.content.Intent
import android.os.IBinder
import android.util.Log
import android.view.LayoutInflater
import android.view.WindowManager
import com.google.firebase.messaging.FirebaseMessagingService
import com.google.firebase.messaging.RemoteMessage
import com.radisolutions.radipeople.radihome.R
class FCMMessageReceiverService : FirebaseMessagingService() {
override fun onMessageReceived(remoteMessage: RemoteMessage?) {
Log.i("naveen", remoteMessage?.notification?.body.toString())
val view = LayoutInflater.from(applicationContext).inflate(R.layout.overlay_visitor_alert, null)
val windowManager = getSystemService(Context.WINDOW_SERVICE) as WindowManager
val layoutParams = WindowManager.LayoutParams(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT)
windowManager.addView(view, layoutParams)
}
override fun onCreate() {
super.onCreate()
}
}
но в строке windowmanager.addview это вызывает ошибку ниже
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
Как это исправить? Обычно это работает, когда я создаю представление внутри какого-либо класса broadcastreceiver, но не работает с классом обслуживания firebase.