将数据传递给 Intent / BroadcastReceiver

Passing Data to Intent / BroadcastReceiver

我正在调用一个意图,而这个包是另一个我无法控制的应用程序。我已经设置了一个 BroadcastReceiver 来监听并从意图中获取一段数据。这在我附加的代码中工作得很好。

我的问题是我现在需要根据我想从调用意图的 activity 传入的数据执行不同的操作。

有没有办法将数据从我的 activity 传递到我可以使用的 BroadcastReceiver?感谢您提供任何帮助。

我曾尝试使用捆绑包(putString 和 getString),但是当意图启动时,它是第 3 方意图,唯一的捆绑包是他们提供给我的数据。我尝试传递的包不存在。

从 MainActivity 调用

        getTickets.setOnClickListener {
            Log.i("Track", "MA1: " + Date().toString())
            if (checkOrientation()) {
                intent = Intent()
                intent.setAction("com.trakitgps.GET_VEHICLE_NUM")
                intent.setPackage("com.trakitgps")
                val filter = IntentFilter("com.trakitgps.GET_VEHICLE_NUM_RESPONSE")
                registerReceiver(receiver, filter)
                startActivity(intent)
            }
        }

广播接收器

class TrackItReceiver : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {


        when (intent.action) {
            "com.trakitgps.GET_VEHICLE_NUM_RESPONSE" -> {
                val truckNbr = intent.extras.getString("vehicleNum")
                val errorMsg = intent.extras.getString("errorMsg")

                val newIntent = Intent(context, TruckTicketsActivity::class.java)
                newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
                newIntent.putExtra("assignedTruck", truckNbr)
                newIntent.putExtra("truckError", errorMsg)
                context.startActivity(newIntent)
            }
        }
    }
}

当然可以。

当您创建 BroadcastReceiver 时,将其在构造函​​数中需要的数据传递给它。然后,当 onReceive() 被调用时,它就有了它需要的数据。像这样:

// Create the BroadcastReceiver
BroadcastReceiver receiver = new MyReceiver(data, another, andAnother);
registerReceiver(receiver, filter)
startActivity(intent)

MyReceiver中,声明成员变量保存dataanotherandAnother,并在构造函数中初始化它们。