将数据传递给 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
中,声明成员变量保存data
、another
和andAnother
,并在构造函数中初始化它们。
我正在调用一个意图,而这个包是另一个我无法控制的应用程序。我已经设置了一个 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
中,声明成员变量保存data
、another
和andAnother
,并在构造函数中初始化它们。