【发布时间】:2021-02-23 23:57:15
【问题描述】:
我的应用上有很多分享按钮。当按下共享按钮时,会向用户显示一个选择器,以便他可以选择一个应用程序来共享内容。我想知道用户选择了什么,所以我决定使用 BroadcastReceiver 和 Intent.createChooser() 方法。
但我在应用中有多个分享按钮,所以我定义了以下类:
class MyBroadcastReceiver(val listener: MyBroadcastReceiverListener) : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
listener.handleShare()
}
interface MyBroadcastReceiverListener {
fun handleShare()
}
}
我想从实现MyBroadcastReceiverListener(Activity1、Activity2、Activity3 等)的不同地方使用这个类,这样我就可以在每个地方对override fun handleShare() 执行相应的任务。我面临的问题是在使用Intent.createChooser() 之前我必须这样做。
var receiver = Intent(this, MyBroadcastReceiver::class.java) // how can I pass args ???? ?
var pi = PendingIntent.getBroadcast(this, 0, receiver, PendingIntent.FLAG_UPDATE_CURRENT)
Intent.createChooser(..., ..., pi.getIntentSender());
因为我必须以静态方式提供MyBroadcastReceiver,所以我无法将参数(在这种情况下为侦听器)传递给MyBroadcastReceiver。有没有办法解决这个问题?感谢您的支持! ????
【问题讨论】:
标签: android kotlin android-intent broadcastreceiver android-pendingintent