问题描述
问题
我正在使用Radar SDK,并且已经在我的broadcastReceiver类中成功接收了事件。我面临的问题是我想在每次事件发生时向EventChannel添加数据,但是由于它们在后台运行,所以我不知道该怎么做,因为它们位于具有不同上下文的不同类中。
我的代码
这是我的broadcastReceiver代码。它从实现broadcastReceiver的SDK实现了RadarReceiver。
public class MyRadarReceiver constructor(val events: EventChannel.EventSink) : RadarReceiver() {
override fun onEventsReceived(context: Context,events: Array<RadarEvent>,user: RadarUser) {
println("an event was received")
}
override fun onLocationUpdated(context: Context,location: Location,user: RadarUser) {
println("location was updated")
}
override fun onClientLocationUpdated(context: Context,stopped: Boolean,source: Radar.RadarLocationSource) {
println("client location updated")
}
override fun onError(context: Context,status: Radar.RadarStatus) {
println(status)
}
override fun onLog(context: Context,message: String) {
println(message)
}
}
所有这些打印语句均已打印,因此可以接收事件。
public class FlutterRadarIoPlugin : FlutterPlugin,MethodCallHandler,ActivityAware,EventChannel.StreamHandler,EventCallback {
private lateinit var channel: MethodChannel
private lateinit var eventChannel: EventChannel
private var mEventSink: EventChannel.EventSink? = null
private var activity: Activity? = null
private var context: Context? = null
.
.
.
override fun onAttachedToEngine(@NonNull FlutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {
this.context = FlutterPluginBinding.getApplicationContext()
channel = MethodChannel(FlutterPluginBinding.getFlutterEngine().getDartExecutor(),"Flutter_radar_io")
channel.setMethodCallHandler(this)
eventChannel = EventChannel(FlutterPluginBinding.getFlutterEngine().getDartExecutor(),"radarStream")
eventChannel.setStreamHandler(this)
}
.
.
.
override fun onListen(o: Any?,eventSink: EventChannel.EventSink) {
mEventSink = eventSink;
}
override fun onCancel(o: Any?) {
mEventSink = null;
}
}
我需要什么
为了让我向EventChannel添加数据,我需要执行mEventSink.success(data)
,但是,在MyRadarReceiver中,我不知道如何访问它,而且我不确定我可以通过其他方式完成此操作。如果您需要查看更多代码,请告诉我共享没有问题。我希望在完成此插件后立即将其开源,因此没有任何秘密。
在此代码段中,已在Android Manifest文件中设置了接收器,但是,我也尝试以编程方式设置接收器。以编程方式设置接收器不起作用,因为没有捕获任何事件。在我询问此问题的地方查看此问题:How to set a programmatic Receiver with IntentFilter?
代码中的...
表明那里还有其他代码,但是我只想只包含相关的内容。这运行没有错误,我只是不确定如何从MyRadarReceiver添加到我的EventChannel
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)