这个代码是写到一半的代码,没有测试,留待周末使用
事情原由:
在学习Flutter中混合通信模块,由于示例代码给的是java代码,我生成的是kotlin代码,所以有点不一样。
另外参考以下链接关于两个FlutterActivity的注意点
https://blog.csdn.net/Mr_Tony/article/details/110005074
官方的教程貌似没有更新到1.2。所以有些地方不适用,下面给出升级的教程:
https://github.com/flutter/flutter/wiki/Upgrading-pre-1.12-Android-projects
百度上面都是java,所以没找到适合的代码
官方链接:
https://flutter.cn/docs/get-started/flutter-for/android-devs#how-do-i-handle-incoming-intents-from-external-applications-in-flutter
这里给出部分的官网代码:
下面是我自己尝试的代码:
package com.example.flutter_app
import android.content.Intent
import android.os.Bundle
import io.flutter.app.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.embedding.engine.plugins.util.GeneratedPluginRegister
import io.flutter.plugin.common.MethodChannel
class MainActivity: FlutterActivity() {
private var sharedText: String? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
GeneratedPluginRegister.registerGeneratedPlugins(FlutterEngine(this))
val intent = intent
val action = intent.action
val type = intent.type
if (Intent.ACTION_SEND == action && type != null) {
if ("text/plain" == type) {
handleSendText(intent) // Handle text being sent
}
}
MethodChannel(flutterView, "app.channel.shared.data").setMethodCallHandler { call, result ->
if (call.method.contentEquals("getSharedText")) {
result.success(sharedText)
sharedText = null
}
}
}
fun handleSendText(intent: Intent) {
sharedText = intent.getStringExtra(Intent.EXTRA_TEXT)
}
}
ps.
- 关于GeneratedPluginRegister引入包的问题,周五测试的是只能使用下面的包
io.flutter.embedding.engine.plugins.util.GeneratedPluginRegister
但是,周六再次测试却发现以下的包也可以引入,原因暂时未知
io.flutter.plugins.GeneratedPluginRegister