HomeWatcher.kt 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package com.sduduzog.slimlauncher.utils
  2. import android.content.BroadcastReceiver
  3. import android.content.Context
  4. import android.content.Intent
  5. import android.content.IntentFilter
  6. class HomeWatcher(private val context: Context) {
  7. private var listener: OnHomePressedListener? = null
  8. private var receiver: InnerReceiver? = null
  9. private val filter = IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)
  10. fun setOnHomePressedListener(listener: OnHomePressedListener) {
  11. this.listener = listener
  12. receiver = InnerReceiver()
  13. }
  14. fun startWatch() {
  15. receiver?.let {
  16. context.registerReceiver(it, filter)
  17. }
  18. }
  19. fun stopWatch() {
  20. receiver?.let {
  21. context.unregisterReceiver(it)
  22. }
  23. }
  24. inner class InnerReceiver : BroadcastReceiver() {
  25. override fun onReceive(context: Context?, intent: Intent?) {
  26. if (intent == null) return
  27. if (intent.action != Intent.ACTION_CLOSE_SYSTEM_DIALOGS) return
  28. val reason = intent.getStringExtra("reason") ?: return
  29. if (reason != "homekey") return
  30. listener?.onHomePressed()
  31. }
  32. }
  33. interface OnHomePressedListener {
  34. fun onHomePressed()
  35. }
  36. }