Files
zd_servicing/servicing/src/main/java/com/za/base/PushMessageActivity.kt
2025-06-17 11:49:32 +08:00

93 lines
2.9 KiB
Kotlin

package com.za.base
import android.content.Context
import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import com.google.gson.Gson
import com.za.bean.JpushBean
import com.za.common.GlobalData
import com.za.common.log.LogUtil
import com.za.service.PushListener
import com.za.service.ServiceManager
open class PushMessageActivity : AppCompatActivity() {
private var currentDialog : AlertDialog? = null
override fun onCreate(savedInstanceState : Bundle?) {
super.onCreate(savedInstanceState) // setupPushMessageReceiver()
}
private fun setupPushMessageReceiver() { // 注册推送消息接收器
ServiceManager.registerPushListener(object : PushListener {
override fun broadcast(msg : String) {
sendMessageToMainProcess(type = Const.PushMessageType.BROADCAST,
message = msg,
context = this@PushMessageActivity)
}
override fun giveUpOrder(jpushBean : JpushBean) {
sendMessageToMainProcess(type = Const.PushMessageType.GIVE_UP,
message = Gson().toJson(jpushBean),
context = this@PushMessageActivity)
}
override fun importantTip(jpushBean : JpushBean) {
sendMessageToMainProcess(type = Const.PushMessageType.IMPORTANT_TIP,
message = Gson().toJson(jpushBean),
context = this@PushMessageActivity)
}
override fun newOrderMsg(jpushBean : JpushBean) {
sendMessageToMainProcess(type = Const.PushMessageType.NEW_ORDER,
message = Gson().toJson(jpushBean),
context = this@PushMessageActivity)
}
override fun reDispatchOrder(jpushBean : JpushBean) {
sendMessageToMainProcess(type = Const.PushMessageType.RE_DISPATCH,
message = Gson().toJson(jpushBean),
context = this@PushMessageActivity)
}
override fun revokeOrder(jpushBean : JpushBean) {
sendMessageToMainProcess(type = Const.PushMessageType.REVOKE,
message = Gson().toJson(jpushBean),
context = this@PushMessageActivity)
}
})
}
override fun onPause() {
super.onPause()
dismissCurrentDialog()
}
private fun dismissCurrentDialog() {
try {
currentDialog?.dismiss()
currentDialog = null
} catch (e : Exception) {
LogUtil.print("PushActivityLifecycleCallbacks", "关闭对话框失败: ${e.message}")
}
}
companion object {
internal const val GIVE_UP_TYPE_NORMAL = 1
internal const val DIALOG_TAG_GIVE_UP = "giveUp"
private fun sendMessageToMainProcess(context : Context, type : String, message : String) {
// 使用广播将消息发送到主进程
val intent = Intent(Const.PushMessageType.ACTION_MAIN.takeIf { GlobalData.isMaster }
?: Const.PushMessageType.ACTION_SDK)
intent.setPackage(context.packageName)
intent.putExtra("type", type)
intent.putExtra("message", message)
context.sendBroadcast(intent)
LogUtil.print("KeepAliveService", "发送消息到主进程: $type")
}
}
}