Как изолировать от вызова onActivityResult?

Вопрос заключается в том что, когда подключенные пакеты flutter работают с MethodChannel и вызывают свои onActivityResult, сперва срабатывает onActivityResult описанный в MainActivity.

Как изолировать вызов onActivityResult описанный в MainActivity от других пакетов flutter Ошибка выдается следующая: PlatformException(INTERRUPTED, Interrupted by another login call, null, null)

class MainActivity : FlutterActivity() {
private val CHANNEL = "flutter_login_ok"
private lateinit var dartChannel: MethodChannel
private lateinit var okLoginManager: Odnoklassniki
lateinit var methodChannelResult: MethodChannel.Result

override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
    super.configureFlutterEngine(flutterEngine)
    val dartChannel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL)
    dartChannel.setMethodCallHandler(MethodCallHandler(methodChannelResult, okLoginManager))
}


private val okAuthCallback = object : OkListener {
    override fun onSuccess(json: JSONObject) {
        try {
            println(json)
            val token = json.getString("access_token")
            val secretKey = json.getString("session_secret_key")
            val expiresIn = json.getString("expires_in")
            val hashmap = HashMap<String, String>()
            hashmap["access_token"] = token
            hashmap["secret"] = secretKey
            hashmap["expires_in"] = expiresIn
            methodChannelResult.success(hashmap)
        } catch (exception: JSONException) {
            onError(exception.localizedMessage)
        }

    }

    override fun onError(error: String?) {
        methodChannelResult.error("UNAVAILABLE", "error authorisation", null)
    }
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    if (::okLoginManager.isInitialized) {
        okLoginManager.onAuthActivityResult(requestCode, resultCode, data, okAuthCallback)
    }
}

}

class MethodCallHandler(
private var methodChannelResult: MethodChannel.Result,
private var okLoginManager: Odnoklassniki) :MethodChannel.MethodCallHandler {

private var activity: Activity? = null

override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) {
    if (call.method == "okLogin") {
        methodChannelResult = result

        okLoginManager = Odnoklassniki.createInstance(
            activity!!.applicationContext,
            getResourceFromContext(activity!!.applicationContext, "ok_app_id"),
            getResourceFromContext(activity!!.applicationContext, "ok_app_key"),
        )

        okLoginManager.requestAuthorization(
            activity!!,
            getResourceFromContext(activity!!.applicationContext, "ok_redirect_url"),
            OkAuthType.WEBVIEW_OAUTH,
            OkScope.VALUABLE_ACCESS
        )
    } else {
        result.notImplemented()
    }
}

private fun getResourceFromContext(context: Context, resName: String): String {
    val stringRes = context.resources.getIdentifier(resName, "string", context.packageName)
    if (stringRes == 0) {
        throw IllegalArgumentException(
            String.format(
                "The 'R.string.%s' value it's not defined in your project's resources file.",
                resName
            )
        )
    }
    return context.getString(stringRes)
}

}


Ответы (0 шт):