已弃用LocalBroadcastManager,我正在尝试使用sendBroadcast()
和registerReceiver()
,但它不起作用。请帮我!我想将信息从LoginActivity传递给MainActivity
LoginAcitivity.kt
val userDataChange = Intent(BROADCAST_USER_DATA_CHANGE)
userDataChange.setClass(this, MainActivity::class.java)
this.sendBroadcast(userDataChange)
startActivity(userDataChange)
finish()
MainActivity.kt
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
registerReceiver(userDataChangeReceiver,
IntentFilter(BROADCAST_USER_DATA_CHANGE))
}
private val userDataChangeReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
println("Receiving")
}
}
但是,输出什么都没有...
您能否确切说明您不希望在“活动”之间共享哪种数据?我认为与Bundle共享此数据是一个更好的主意。
示例:
// Create the text message with a string
val sendIntent = Intent().apply {
action = Intent.ACTION_SEND
putExtra(Intent.EXTRA_TEXT, textMessage)
type = "text/plain"
}
// Verify that the intent will resolve to an activity
if (sendIntent.resolveActivity(packageManager) != null) {
startActivity(sendIntent)
}
更多信息:https://developer.android.com/guide/components/intents-filters
对于您的情况非常重要!您必须在清单中注册您的广播接收器
示例
<receiver android:name=".MyBroadcastReceiver" android:exported="false">
<intent-filter>
...
</intent-filter>
</receiver>
更多信息https://developer.android.com/guide/components/broadcasts