Android Kotlin BroadcastReceiver与Activity接口回调详细代码与实例
以下是一个示例代码,演示了如何在 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 接口回调。根据您的需求,您可能需要根据自己的实际情况进行适当的修改和扩展
原文地址: https://www.cveoy.top/t/topic/ixk3 著作权归作者所有。请勿转载和采集!