MainActivity.kt 1.84 KB
package com.naji.one_key

import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant
import android.os.Bundle
import android.util.Log
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugin.common.MethodCall

class MainActivity: FlutterActivity() {

    private var TAG = "| com.naji.book |"

    // 通道名称
    private var CHANNEL = "com.naji/book"

    // native端的Intent数据
    private var intentMap = mutableMapOf<String, String>()

    override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
        GeneratedPluginRegistrant.registerWith(flutterEngine);
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // flutter版本更新后使用 getFlutterEngine().getDartExecutor().getBinaryMessenger()代替 getFlutterView()
        val channel = MethodChannel(getFlutterEngine()?.getDartExecutor()?.getBinaryMessenger(), CHANNEL)

        // 这里要获取启动时的intent
        val uri = intent.data
        val paramsMap = mutableMapOf<String, String>()
        if (uri != null) {
            val set = uri.queryParameterNames
            for (name in set) {
                val value = uri.getQueryParameter(name)
                paramsMap[name.toString()] = value.toString()
            }
        }

        intentMap = paramsMap

        channel.setMethodCallHandler { call, result ->
            Log.i(TAG,intentMap.toString());
            when (call.method) {
            "getIntent" -> get_intent(call, result)
        }
        }
    }

    // 获取intent
    private fun get_intent(call: MethodCall, result: MethodChannel.Result) {
        Log.i(TAG, "调用${call.method}方法")
        result.success(intentMap)
    }
}