android - 如何使用 API 从颤振插件启动活动
问题描述
所以我正在制作一个 Flutter 插件,并尝试在 Android 上运行 Kotlin 代码。问题是,此代码运行一个方法,该方法尝试在没有FLAG_ACTIVITY_NEW_TASK
意图标志的情况下启动活动。这样做的问题是它也没有办法给它一个intent instance
,因为它试图在方法本身内实例化一个实例。该方法期望从存储在 UI 上并从中调用的按钮或其他方法调用。但是,由于是从onMethodCall
Flutter插件中的方法调用的,所以好像不起作用。我尝试了许多解决方法,例如在 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?
解决方案
您可以扩展您的插件以ActivityAware
在您的插件类中实现,当您实现它时,您会得到几个回调,这些回调会为您提供当前活动。像这样 :
lateinit activity: Activity? = null
override fun onDetachedFromActivity() {
activity = null
}
override fun onReattachedToActivityForConfigChanges(binding: ActivityPluginBinding) {
activity = binding.activity
}
override fun onAttachedToActivity(binding: ActivityPluginBinding) {
activity = binding.activity
}
override fun onDetachedFromActivityForConfigChanges() {
activity = null
}
之后,您可以从分配的活动变量中启动活动。
如果您需要进一步的帮助,请告诉我。
推荐阅读
- jquery - 可调整大小的样式左右箭头
- scala - 如何在 sbt 控制台中加载测试配置 jar
- python - 替换熊猫数据框中的值会使内核崩溃
- php - 没有抛出错误,但 INSERT 语句不起作用(php,mysql)
- gitlab - 当原始分支名称具有特定名称时,在合并请求上运行 gitlab 运行器管道
- .htaccess - 将旧域和页面重定向到新域上的等效页面
- java - 如何使用 jks 从 url 生成 wsdl java 类?
- javascript - 用情感 js 设计占位符文本
- javascript - 承诺中的 app.use (bookshelf.js & express-basic-auth)
- powershell - 通过正则表达式从行中提取特定的多个字符串