diff --git a/flutter_inappwebview_android/android/src/main/java/com/pichillilorenzo/flutter_inappwebview_android/InAppWebViewFlutterPlugin.java b/flutter_inappwebview_android/android/src/main/java/com/pichillilorenzo/flutter_inappwebview_android/InAppWebViewFlutterPlugin.java index b475a0e3d7..0ca035daad 100755 --- a/flutter_inappwebview_android/android/src/main/java/com/pichillilorenzo/flutter_inappwebview_android/InAppWebViewFlutterPlugin.java +++ b/flutter_inappwebview_android/android/src/main/java/com/pichillilorenzo/flutter_inappwebview_android/InAppWebViewFlutterPlugin.java @@ -24,9 +24,7 @@ import io.flutter.embedding.engine.plugins.activity.ActivityAware; import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding; import io.flutter.plugin.common.BinaryMessenger; -import io.flutter.plugin.common.PluginRegistry; import io.flutter.plugin.platform.PlatformViewRegistry; -import io.flutter.view.FlutterView; public class InAppWebViewFlutterPlugin implements FlutterPlugin, ActivityAware { @@ -64,51 +62,27 @@ public class InAppWebViewFlutterPlugin implements FlutterPlugin, ActivityAware { public ProcessGlobalConfigManager processGlobalConfigManager; public FlutterWebViewFactory flutterWebViewFactory; public Context applicationContext; - public PluginRegistry.Registrar registrar; public BinaryMessenger messenger; public FlutterPlugin.FlutterAssets flutterAssets; @Nullable public ActivityPluginBinding activityPluginBinding; @Nullable public Activity activity; - @SuppressWarnings("deprecation") - public FlutterView flutterView; public InAppWebViewFlutterPlugin() {} - @SuppressWarnings("deprecation") - public static void registerWith(PluginRegistry.Registrar registrar) { - final InAppWebViewFlutterPlugin instance = new InAppWebViewFlutterPlugin(); - instance.registrar = registrar; - instance.onAttachedToEngine( - registrar.context(), registrar.messenger(), registrar.activity(), registrar.platformViewRegistry(), registrar.view()); - } - @Override - public void onAttachedToEngine(FlutterPluginBinding binding) { + public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) { this.flutterAssets = binding.getFlutterAssets(); - - // Shared.activity could be null or not. - // It depends on who is called first between onAttachedToEngine event and onAttachedToActivity event. - // - // See https://github.com/pichillilorenzo/flutter_inappwebview/issues/390#issuecomment-647039084 - onAttachedToEngine( - binding.getApplicationContext(), binding.getBinaryMessenger(), this.activity, binding.getPlatformViewRegistry(), null); - } - - @SuppressWarnings("deprecation") - private void onAttachedToEngine(Context applicationContext, BinaryMessenger messenger, Activity activity, PlatformViewRegistry platformViewRegistry, FlutterView flutterView) { - this.applicationContext = applicationContext; - this.activity = activity; - this.messenger = messenger; - this.flutterView = flutterView; + this.applicationContext = binding.getApplicationContext(); + this.messenger = binding.getBinaryMessenger(); inAppBrowserManager = new InAppBrowserManager(this); headlessInAppWebViewManager = new HeadlessInAppWebViewManager(this); chromeSafariBrowserManager = new ChromeSafariBrowserManager(this); noHistoryCustomTabsActivityCallbacks = new NoHistoryCustomTabsActivityCallbacks(this); flutterWebViewFactory = new FlutterWebViewFactory(this); - platformViewRegistry.registerViewFactory( + binding.getPlatformViewRegistry().registerViewFactory( FlutterWebViewFactory.VIEW_TYPE_ID, flutterWebViewFactory); platformUtil = new PlatformUtil(this); @@ -132,6 +106,10 @@ private void onAttachedToEngine(Context applicationContext, BinaryMessenger mess @Override public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) { + disposeManagers(); + } + + private void disposeManagers() { if (platformUtil != null) { platformUtil.dispose(); platformUtil = null; @@ -198,38 +176,21 @@ public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) { public void onAttachedToActivity(ActivityPluginBinding activityPluginBinding) { this.activityPluginBinding = activityPluginBinding; this.activity = activityPluginBinding.getActivity(); - - if (noHistoryCustomTabsActivityCallbacks != null) { - this.activity.getApplication().registerActivityLifecycleCallbacks(noHistoryCustomTabsActivityCallbacks.activityLifecycleCallbacks); - } } @Override public void onDetachedFromActivityForConfigChanges() { - if (activity != null && noHistoryCustomTabsActivityCallbacks != null) { - this.activity.getApplication().unregisterActivityLifecycleCallbacks(noHistoryCustomTabsActivityCallbacks.activityLifecycleCallbacks); - } - activityPluginBinding = null; activity = null; } @Override public void onReattachedToActivityForConfigChanges(ActivityPluginBinding activityPluginBinding) { - this.activityPluginBinding = activityPluginBinding; - this.activity = activityPluginBinding.getActivity(); - - if (noHistoryCustomTabsActivityCallbacks != null) { - this.activity.getApplication().registerActivityLifecycleCallbacks(noHistoryCustomTabsActivityCallbacks.activityLifecycleCallbacks); - } + onAttachedToActivity(activityPluginBinding); } @Override public void onDetachedFromActivity() { - if (activity != null && noHistoryCustomTabsActivityCallbacks != null) { - this.activity.getApplication().unregisterActivityLifecycleCallbacks(noHistoryCustomTabsActivityCallbacks.activityLifecycleCallbacks); - } - activityPluginBinding = null; activity = null; } diff --git a/flutter_inappwebview_android/android/src/main/java/com/pichillilorenzo/flutter_inappwebview_android/Util.java b/flutter_inappwebview_android/android/src/main/java/com/pichillilorenzo/flutter_inappwebview_android/Util.java index a5378b7c84..1531562129 100755 --- a/flutter_inappwebview_android/android/src/main/java/com/pichillilorenzo/flutter_inappwebview_android/Util.java +++ b/flutter_inappwebview_android/android/src/main/java/com/pichillilorenzo/flutter_inappwebview_android/Util.java @@ -66,7 +66,7 @@ public class Util { private Util() {} public static String getUrlAsset(InAppWebViewFlutterPlugin plugin, String assetFilePath) throws IOException { - String key = (plugin.registrar != null) ? plugin.registrar.lookupKeyForAsset(assetFilePath) : plugin.flutterAssets.getAssetFilePathByName(assetFilePath); + String key = plugin.flutterAssets.getAssetFilePathByName(assetFilePath); InputStream is = null; IOException e = null; @@ -91,7 +91,7 @@ public static String getUrlAsset(InAppWebViewFlutterPlugin plugin, String assetF } public static InputStream getFileAsset(InAppWebViewFlutterPlugin plugin, String assetFilePath) throws IOException { - String key = (plugin.registrar != null) ? plugin.registrar.lookupKeyForAsset(assetFilePath) : plugin.flutterAssets.getAssetFilePathByName(assetFilePath); + String key = plugin.flutterAssets.getAssetFilePathByName(assetFilePath); AssetManager mg = plugin.applicationContext.getResources().getAssets(); return mg.open(key); } diff --git a/flutter_inappwebview_android/android/src/main/java/com/pichillilorenzo/flutter_inappwebview_android/webview/in_app_webview/FlutterWebView.java b/flutter_inappwebview_android/android/src/main/java/com/pichillilorenzo/flutter_inappwebview_android/webview/in_app_webview/FlutterWebView.java index 5605b68e3b..97a228bb29 100755 --- a/flutter_inappwebview_android/android/src/main/java/com/pichillilorenzo/flutter_inappwebview_android/webview/in_app_webview/FlutterWebView.java +++ b/flutter_inappwebview_android/android/src/main/java/com/pichillilorenzo/flutter_inappwebview_android/webview/in_app_webview/FlutterWebView.java @@ -64,7 +64,8 @@ public FlutterWebView(final InAppWebViewFlutterPlugin plugin, final Context cont } webView = new InAppWebView(context, plugin, id, windowId, customSettings, contextMenu, - customSettings.useHybridComposition ? null : plugin.flutterView, userScripts); + customSettings.useHybridComposition ? null : plugin.binding.getFlutterEngine().getRenderer().getView(), userScripts); + displayListenerProxy.onPostWebViewInitialization(displayManager); // set MATCH_PARENT layout params to the WebView, otherwise it won't take all the available space! @@ -186,4 +187,4 @@ public void onFlutterViewDetached() { webView.setContainerView(null); } } -} \ No newline at end of file +} diff --git a/flutter_inappwebview_android/android/src/main/java/com/pichillilorenzo/flutter_inappwebview_android/webview/in_app_webview/InAppWebViewChromeClient.java b/flutter_inappwebview_android/android/src/main/java/com/pichillilorenzo/flutter_inappwebview_android/webview/in_app_webview/InAppWebViewChromeClient.java index de544f9729..5732b21d1e 100755 --- a/flutter_inappwebview_android/android/src/main/java/com/pichillilorenzo/flutter_inappwebview_android/webview/in_app_webview/InAppWebViewChromeClient.java +++ b/flutter_inappwebview_android/android/src/main/java/com/pichillilorenzo/flutter_inappwebview_android/webview/in_app_webview/InAppWebViewChromeClient.java @@ -126,9 +126,7 @@ public InAppWebViewChromeClient(@NonNull final InAppWebViewFlutterPlugin plugin, this.inAppBrowserDelegate.getActivityResultListeners().add(this); } - if (plugin.registrar != null) - plugin.registrar.addActivityResultListener(this); - else if (plugin.activityPluginBinding != null) + if (plugin.activityPluginBinding != null) plugin.activityPluginBinding.addActivityResultListener(this); }