如何在Kotlin中使用注册并在Android中创建Broadcast Receiver。任何建议.... 在Java中,你可以通过声明它是一个广播接收器来创建它。但是在Kotlin中没有广播接收器功能......好吧,如果它存在,那么我无法找到它或如何用它。kotlin中的广播Reciver
回答
你可以做到这一点通过以下方式
在活动类
val broadCastReceiver = object : BroadcastReceiver() {
override fun onReceive(contxt: Context?, intent: Intent?) {
when (intent?.action) {
BROADCAST_DEFAULT_ALBUM_CHANGED -> handleAlbumChanged()
BROADCAST_CHANGE_TYPE_CHANGED -> handleChangeTypeChanged()
}
}
}
注册广播创建一个广播接收器对象接收器在您的活动的onCreate()函数中
LocalBroadcastManager.getInstance(this)
.registerReceiver(broadCastReceiver, IntentFilter(BROADCAST_DEFAULT_ALBUM_CHANGED))
注销它在你的活动
LocalBroadcastManager.getInstance(this)
.unregisterReceiver(broadCastReceiver)
嗨怎么样清单文件来设置Receiver? –
@Academy of Programmer您需要在清单中注册接收者,如果它是全球广播。你不要为本地广播做。 –
匿名类的语法是这样的:
val receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
}
}
真的很有帮助,谢谢!但是你会在清单中将'
的OnDestroy函数中我已经创建了一个BroadcastReceiver Kotlin extension,你可以在任何地方复制/粘贴。 它没有比已经提到的更多,但它减少了一些样板。
使用这个扩展,你应该注册/注销,像这样:
private lateinit var myReceiver: BroadcastReceiver
override fun onStart() {
super.onStart()
myReceiver = registerReceiver(IntentFilter(BROADCAST_SOMETHING_HAPPENED)) { intent ->
when (intent?.action) {
BROADCAST_SOMETHING_HAPPENED -> handleSomethingHappened()
}
}
}
override fun onStop() {
super.onStop()
unregisterReceiver(myReceiver)
}
- 1. 无法注册广播reciver onManifiest文件
- 2. 从广播reciver到一项活动的意图?
- 3. 的Android后重新启动广播Reciver没有运行
- 4. 广播中的R
- 5. 在socket.io中广播?
- 6. 多播与局域网中的广播
- 7. 广播听众不是广播事件
- 8. 通过wifi广播区域广播
- 9. Gridview与广播列,广播id问题
- 10. iOS UDP广播与PHP UDP广播
- 11. MPI广播中的错误
- 12. iPhone中的小区广播
- 13. 在Java中的UDP广播
- 14. 广播与numpy的
- 15. 的Python:与广播
- 16. 火花流 - 在foreachrdd中广播变量广播始终
- 17. 广播接收
- 18. 动态广播
- 19. 广播接收
- 20. Android广播组
- 21. 在numpy广播
- 22. 广播插座
- 23. 音频广播
- 24. 广播延迟
- 25. 广播式IPC
- 26. 蓝牙广播
- 27. SignalR不广播
- 28. AngularJs $广播
- 29. Indy TUDPServer广播
- 30. 收到广播
你是什么意思说“不存在广播接收功能”?从Kotlin你可以看到你可以从Java看到的相同的类。 –
谢谢advice.It真的对我很重要。 –