11package com.linusu.flutter_web_auth_2
22
3+ import android.app.Activity
34import android.content.Context
45import android.content.Intent
56import android.content.pm.PackageManager
@@ -9,16 +10,20 @@ import androidx.browser.customtabs.CustomTabsClient
910import androidx.browser.customtabs.CustomTabsIntent
1011
1112import io.flutter.embedding.engine.plugins.FlutterPlugin
13+ import io.flutter.embedding.engine.plugins.activity.ActivityAware
14+ import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding
1215import io.flutter.plugin.common.BinaryMessenger
1316import io.flutter.plugin.common.MethodCall
1417import io.flutter.plugin.common.MethodChannel
1518import io.flutter.plugin.common.MethodChannel.MethodCallHandler
1619import io.flutter.plugin.common.MethodChannel.Result
20+ import java.util.ArrayList
1721
1822class FlutterWebAuth2Plugin (
1923 private var context : Context ? = null ,
20- private var channel : MethodChannel ? = null
21- ) : MethodCallHandler, FlutterPlugin {
24+ private var channel : MethodChannel ? = null ,
25+ private var activity : Activity ? = null ,
26+ ) : MethodCallHandler, FlutterPlugin, ActivityAware {
2227 companion object {
2328 val callbacks = mutableMapOf<String , Result >()
2429 }
@@ -46,17 +51,11 @@ class FlutterWebAuth2Plugin(
4651 val options = call.argument<Map <String , Any >>(" options" )!!
4752
4853 callbacks[callbackUrlScheme] = resultCallback
49- val intent = CustomTabsIntent .Builder ().build()
50- val keepAliveIntent = Intent (context, KeepAliveService ::class .java)
51-
52- intent.intent.addFlags(options[" intentFlags" ] as Int )
53- intent.intent.putExtra(" android.support.customtabs.extra.KEEP_ALIVE" , keepAliveIntent)
54-
55- val targetPackage = findTargetBrowserPackageName(options)
56- if (targetPackage != null ) {
57- intent.intent.setPackage(targetPackage)
58- }
59- intent.launchUrl(context!! , url)
54+ activity?.startActivity(Intent (activity,AuthenticationManagementActivity ::class .java).apply {
55+ putExtra(AuthenticationManagementActivity .KEY_AUTH_URI ,url)
56+ putExtra(AuthenticationManagementActivity .KEY_AUTH_OPTION_INTENT_FLAGS , options[" intentFlags" ] as Int )
57+ putExtra(AuthenticationManagementActivity .KEY_AUTH_OPTION_TARGET_PACKAGE , findTargetBrowserPackageName(options))
58+ })
6059 }
6160
6261 " cleanUpDanglingCalls" -> {
@@ -71,6 +70,22 @@ class FlutterWebAuth2Plugin(
7170 }
7271 }
7372
73+ override fun onAttachedToActivity (binding : ActivityPluginBinding ) {
74+ activity = binding.activity
75+ }
76+
77+ override fun onDetachedFromActivityForConfigChanges () {
78+ onDetachedFromActivity()
79+ }
80+
81+ override fun onReattachedToActivityForConfigChanges (binding : ActivityPluginBinding ) {
82+ onAttachedToActivity(binding)
83+ }
84+
85+ override fun onDetachedFromActivity () {
86+ activity = null
87+ }
88+
7489 /* *
7590 * Find Support CustomTabs Browser.
7691 *
@@ -145,5 +160,4 @@ class FlutterWebAuth2Plugin(
145160 )
146161 return value == packageName
147162 }
148-
149163}
0 commit comments