From adcfdce7edefe061055a0d0b861cb7e18d71ccc8 Mon Sep 17 00:00:00 2001 From: Lorenzo Pichilli Date: Fri, 10 Nov 2023 21:12:14 +0100 Subject: [PATCH] android imm.isAcceptingText() fix code refactoring --- .../webview/in_app_webview/InAppWebView.java | 22 ++++++++++--------- .../in_app_webview_controller.dart | 4 ++-- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/android/src/main/java/com/pichillilorenzo/flutter_inappwebview/webview/in_app_webview/InAppWebView.java b/android/src/main/java/com/pichillilorenzo/flutter_inappwebview/webview/in_app_webview/InAppWebView.java index 1cead81b..40190061 100755 --- a/android/src/main/java/com/pichillilorenzo/flutter_inappwebview/webview/in_app_webview/InAppWebView.java +++ b/android/src/main/java/com/pichillilorenzo/flutter_inappwebview/webview/in_app_webview/InAppWebView.java @@ -660,7 +660,7 @@ final public class InAppWebView extends InputAwareWebView implements InAppWebVie if (plugin == null) { return; } - + loadUrl(Util.getUrlAsset(plugin, assetFilePath)); } @@ -690,7 +690,7 @@ final public class InAppWebView extends InputAwareWebView implements InAppWebVie public void takeScreenshot(final @Nullable Map screenshotConfiguration, final MethodChannel.Result result) { final float pixelDensity = Util.getPixelDensity(getContext()); - + mainLooperHandler.post(new Runnable() { @Override public void run() { @@ -1392,9 +1392,9 @@ final public class InAppWebView extends InputAwareWebView implements InAppWebVie if (printManager != null) { PrintAttributes.Builder builder = new PrintAttributes.Builder(); - + String jobName = (getTitle() != null ? getTitle() : getUrl()) + " Document"; - + if (settings != null) { if (settings.jobName != null && !settings.jobName.isEmpty()) { jobName = settings.jobName; @@ -1445,7 +1445,7 @@ final public class InAppWebView extends InputAwareWebView implements InAppWebVie String id = UUID.randomUUID().toString(); PrintJobController printJobController = new PrintJobController(id, job, settings, plugin); plugin.printJobManager.jobs.put(printJobController.id, printJobController); - return id; + return id; } } else { Log.e(LOG_TAG, "No PrintManager available"); @@ -1525,14 +1525,16 @@ final public class InAppWebView extends InputAwareWebView implements InAppWebVie public void run() { InputMethodManager imm = (InputMethodManager) getContext().getSystemService(INPUT_METHOD_SERVICE); + boolean isAcceptingText = false; - try { - if (imm != null) { + if (imm != null) { + try { // imm.isAcceptingText() seems to sometimes crash on some devices isAcceptingText = imm.isAcceptingText(); + } catch (Exception ignored) { } - } catch (Exception ignored) { } + if (containerView != null && imm != null && !isAcceptingText) { imm.hideSoftInputFromWindow( containerView.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); @@ -1718,7 +1720,7 @@ final public class InAppWebView extends InputAwareWebView implements InAppWebVie public void hideContextMenu() { removeView(floatingContextMenu); floatingContextMenu = null; - + if (channelDelegate != null) channelDelegate.onHideContextMenu(); } @@ -2004,7 +2006,7 @@ final public class InAppWebView extends InputAwareWebView implements InAppWebVie public WebViewChannelDelegate getChannelDelegate() { return channelDelegate; } - + @Override public void setChannelDelegate(@Nullable WebViewChannelDelegate channelDelegate) { this.channelDelegate = channelDelegate; diff --git a/lib/src/in_app_webview/in_app_webview_controller.dart b/lib/src/in_app_webview/in_app_webview_controller.dart index 139c29e7..ce252146 100644 --- a/lib/src/in_app_webview/in_app_webview_controller.dart +++ b/lib/src/in_app_webview/in_app_webview_controller.dart @@ -1878,7 +1878,7 @@ class InAppWebViewController { ///- MacOS ([Official API - WKWebView.canGoBack](https://developer.apple.com/documentation/webkit/wkwebview/1414966-cangoback)) Future canGoBack() async { Map args = {}; - return await _channel?.invokeMethod('canGoBack', args) ?? false; + return await _channel?.invokeMethod('canGoBack', args); } ///Goes forward in the history of the WebView. @@ -1903,7 +1903,7 @@ class InAppWebViewController { ///- MacOS ([Official API - WKWebView.canGoForward](https://developer.apple.com/documentation/webkit/wkwebview/1414962-cangoforward)) Future canGoForward() async { Map args = {}; - return await _channel?.invokeMethod('canGoForward', args) ?? false; + return await _channel?.invokeMethod('canGoForward', args); } ///Goes to the history item that is the number of steps away from the current item. Steps is negative if backward and positive if forward.