Andrew
Andrew

Reputation: 2157

Broadcast receiver sends wrong data from one activity to another activity

I would like to act at one activity from another one. Lets call them Sender and Receiver. So, in Receiver I have registered receiver:

receiver = object : BroadcastReceiver() {
            override fun onReceive(context: Context, intent: Intent) {
                val command = intent.getIntExtra("action_id", -1)
                val bundle = intent.extras

                for (key in bundle!!.keySet()) {
                    val value = bundle[key]
                    Timber.i(String.format("%s %s (%s)", key,
                            value.toString(), value!!.javaClass.name))
                }

            }
        }

registerReceiver(receiver, IntentFilter("command"))

And I send data from `Sender activity before closing it:

backToMess.setOnClickListener {
            dialog.dismiss()

            val intent = Intent()
            intent.action = "command"
            intent.putExtra("action_id", 1)
            intent.putExtra("m_id", intent.getIntExtra("message_id", 0))
            intent.putExtra("list_type", intent.getIntExtra("list_type", 0))
            intent.putExtra("list_pos", intent.getIntExtra("list_pos", 0))
            sendBroadcast(intent)

            finishAndRemoveTask()
        }

Data which I send from Sender is: 1,9238,1,12 and data which I receive at Receiver: 1,0,0,0 I don't understand why it happens. Maybe I can't send several extras or what?

Upvotes: 0

Views: 140

Answers (1)

k3b
k3b

Reputation: 14755

I send from Sender is: 1,9238,1,12

val intent = Intent()
intent.getIntExtra("message_id", 0)

you are reading data from an object that you just created which is "0".

try

   backToMess.setOnClickListener {
        dialog.dismiss()

        val broadcastIntent = Intent()
        broadcastIntent.action = "command"
        broadcastIntent.putExtra("action_id", 1)
        broadcastIntent.putExtra("m_id", intent.getIntExtra("message_id", 0))
        broadcastIntent.putExtra("list_type", intent.getIntExtra("list_type", 0))
        broadcastIntent.putExtra("list_pos", intent.getIntExtra("list_pos", 0))
        sendBroadcast(broadcastIntent)

        finishAndRemoveTask()
    }

Upvotes: 2

Related Questions