以下是一个示例代码,演示了如何在 Kotlin 中使用 BroadcastReceiver 和 Activity 接口回调。

MainActivity.kt 文件:

import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.Toast

class MainActivity : AppCompatActivity(), MyBroadcastReceiver.Callback {

    private lateinit var broadcastReceiver: MyBroadcastReceiver

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        broadcastReceiver = MyBroadcastReceiver(this)

        val button: Button = findViewById(R.id.button)
        button.setOnClickListener {
            val intent = Intent("com.example.ACTION_CUSTOM_BROADCAST")
            sendBroadcast(intent)
        }
    }

    override fun onResume() {
        super.onResume()
        val intentFilter = IntentFilter("com.example.ACTION_CUSTOM_BROADCAST")
        registerReceiver(broadcastReceiver, intentFilter)
    }

    override fun onPause() {
        super.onPause()
        unregisterReceiver(broadcastReceiver)
    }

    override fun onBroadcastReceived(message: String) {
        Toast.makeText(this, "Received: $message", Toast.LENGTH_SHORT).show()
    }
}

MyBroadcastReceiver.kt 文件:

import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent

class MyBroadcastReceiver(private val callback: Callback) : BroadcastReceiver() {

    interface Callback {
        fun onBroadcastReceived(message: String)
    }

    override fun onReceive(context: Context?, intent: Intent?) {
        if (intent?.action == "com.example.ACTION_CUSTOM_BROADCAST") {
            val message = intent.getStringExtra("message")
            callback.onBroadcastReceived(message)
        }
    }
}

在这个示例中,我们创建了一个 MainActivity,并在其中注册了一个按钮的点击事件。当按钮被点击时,我们发送了一个自定义广播。MainActivity 实现了 MyBroadcastReceiver.Callback 接口,用于处理广播接收后的回调。在 MainActivity 的 onResume 和 onPause 方法中,我们注册和注销了 MyBroadcastReceiver。当广播接收到时,会调用 MyBroadcastReceiver 的 onReceive 方法,然后通过回调将消息传递给 MainActivity。

请注意,在 AndroidManifest.xml 文件中,需要添加以下代码来声明广播接收器:

<receiver android:name=".MyBroadcastReceiver">
    <intent-filter>
        <action android:name="com.example.ACTION_CUSTOM_BROADCAST" />
    </intent-filter>
</receiver>

这是一个简单的示例,演示了如何使用 BroadcastReceiver 和 Activity 接口回调。根据您的需求,您可能需要根据自己的实际情况进行适当的修改和扩展

Android Kotlin BroadcastReceiver与Activity接口回调详细代码与实例

原文地址: https://www.cveoy.top/t/topic/ixk3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录