From d23b87027641abd752d9c65443f9cc65d6508961 Mon Sep 17 00:00:00 2001 From: Philipp Schaefer Date: Thu, 18 Sep 2014 17:22:25 +0200 Subject: [PATCH] workaround: catch IllegalStateException if classic webview is used on android 4.4+ devices --- .../src/com/cradle/iitc_mobile/IITC_WebView.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_WebView.java b/mobile/src/com/cradle/iitc_mobile/IITC_WebView.java index 7c329a7c..cb9da98a 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_WebView.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_WebView.java @@ -141,9 +141,18 @@ public class IITC_WebView extends WebView { @TargetApi(19) public void loadJS(final String js) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - evaluateJavascript(js, null); - } else { + boolean classicWebView = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; + if (!classicWebView) { + // some strange Android 4.4+ custom ROMs are using the classic webview + try { + evaluateJavascript(js, null); + } catch (final IllegalStateException e) { + Log.e(e); + Log.d("Classic WebView detected: use old injection method"); + classicWebView = true; + } + } + if (classicWebView) { // if in edit text mode, don't load javascript otherwise the keyboard closes. final HitTestResult testResult = getHitTestResult(); if (testResult != null && testResult.getType() == HitTestResult.EDIT_TEXT_TYPE) {