Flutter插件:如何使用IntentFilter设置程序接收器

问题描述

问题

我一直在为Radar SDK开发Flutter插件,但是,我无法以编程方式设置我的broadcastReceiver。

这可行,但是我无法访问我的EventChannel

当我在插件的Android Manifest中设置我的Receiver时,将正确调用Receiver。清单如下所示:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.yourorg.appname">
  <application
    android:name="io.Flutter.app.FlutterApplication">
    <receiver
      android:name=".MyRadarReceiver"
      android:enabled="true"
      android:exported="false">
        <intent-filter>
            <action android:name="io.radar.sdk.RECEIVED" />
        </intent-filter>
    </receiver>
  </application>
</manifest>

我尝试过的东西

但是,当我尝试以编程方式设置接收器时,没有接收到任何事件。我在onAttachedToEngine注册了接收者,我认为这是正确的,但是没有捕获任何事件。

override fun onAttachedToEngine(@NonNull FlutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {
  this.context = FlutterPluginBinding.getApplicationContext()
  channel = MethodChannel(FlutterPluginBinding.getFlutterEngine().getDartExecutor(),"Flutter_radar_io")
  channel.setMethodCallHandler(this)

  receiver = MyRadarReceiver(this)
  FlutterPluginBinding.getApplicationContext().registerReceiver(receiver,IntentFilter("io.radar.sdk.RECEIVED"))
}

为什么

我需要以编程方式设置接收器的原因是,我需要将上下文传递给接收器,以便在接收到事件时,可以将新事件添加到我的EventChannel中,该事件可以作为流中的流进行订阅应用。可能有另一种方法可以完成此任务,但这与我已经接近了。

如果您需要我共享更多代码(例如接收器类),我将非常高兴。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)