所以我正在制作Flutter插件,并且试图在Android上运行Kotlin代码。问题是,此代码运行一种方法,该方法尝试在没有意图上的FLAG_ACTIVITY_NEW_TASK
标志的情况下启动活动。问题是它在尝试实例化方法本身内部的实例时也没有办法给它一个intent instance
。该方法希望从存储在UI上并从中调用的按钮或其他方法调用。但是,由于从Flutter插件中的onMethodCall
方法调用了它,因此它似乎不起作用。我尝试了许多解决方法,例如在Activity中添加方法,并在从flutter插件类中调用它时在其中运行代码。我也尝试过使用UIThread,也没有运气。任何解决方法?
注意:由于未隐藏此API,因此我未提供任何代码。应该只知道我正在从onMethodCall
事件中运行代码。
错误:Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
正如您提到的,对于Flutter插件,任何与平台相关的逻辑都应保留在FlutterActivity的子类中,该子类用于显示本机模块内部的flutter模块/屏幕。现在,您可以从该子类启动intent,而无需任何其他标志。
@@ note-FlutterActvity的子类应保留在本机模块中。
class FlutterResponseActivity : FlutterActivity() {
private var methodResult: Result? = null
override fun provideFlutterEngine(context: Context): FlutterEngine? {
return MyApplication.mContext.flutterEngine //Pre-warmed flutter engine
}
private fun startNewActivity() {
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
}
}