未修复问题更新为已修复
1,
java.lang.IllegalArgumentException: bad parameter at org.apache.http.client.utils.URLEncodedUtils.parse(URLEncodedUtils.java:139) at org.apache.http.client.utils.URLEncodedUtils.parse(URLEncodedUtils.java:76) at android.webkit.AccessibilityInjector.getAxsUrlParameterValue(AccessibilityInjector.java:404) at android.webkit.AccessibilityInjector.shouldInjectJavaScript(AccessibilityInjector.java:323) at android.webkit.AccessibilityInjector.onPageFinished(AccessibilityInjector.java:282) at android.webkit.WebViewClassic.onPageFinished(WebViewClassic.java:4837) at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:406) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:155) at android.app.ActivityThread.main(ActivityThread.java:5511) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1029) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:796) at dalvik.system.NativeStart.main(Native Method)
修复方式:
4.1系统加载的网页若可能出现异常则占时关闭Js,规避Crash
2,/** * fix 4.1系统加载网页时出现IllegalArgumentException */ public static void disableJsIfUrlEncodedFailed(IWebView webView, String url){ if(Build.VERSION.SDK_INT != 16) {return;} try { URLEncodedUtils.parse(new URI(url), null); webView.getSettings().setJavaScriptEnabled(true); } catch (URISyntaxException ignored) { } catch (IllegalArgumentException e) { webView.getSettings().setJavaScriptEnabled(false); } }
java.lang.NullPointerException at android.webkit.AccessibilityInjector$TextToSpeechWrapper$1.onInit(AccessibilityInjector.java:753) at android.speech.tts.TextToSpeech.dispatchOnInit(TextToSpeech.java:640) at android.speech.tts.TextToSpeech.initTts(TextToSpeech.java:619) at android.speech.tts.TextToSpeech.<init>(TextToSpeech.java:553) at android.webkit.AccessibilityInjector$TextToSpeechWrapper.<init>(AccessibilityInjector.java:676) at android.webkit.AccessibilityInjector.addTtsApis(AccessibilityInjector.java:480) at android.webkit.AccessibilityInjector.addAccessibilityApisIfNecessary(AccessibilityInjector.java:168) at android.webkit.AccessibilityInjector.onPageStarted(AccessibilityInjector.java:340) at android.webkit.WebViewClassic.onPageStarted(WebViewClassic.java:4480) at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:366) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:194) at android.app.ActivityThread.main(ActivityThread.java:5407) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) at dalvik.system.NativeStart.main(Native Method)
修复方案:
问题主要集中在4.2.1和4.2.2 ,对此针对性处理:
/** * 关闭辅助功能,针对4.2.1和4.2.2 崩溃问题 * java.lang.NullPointerException * at android.webkit.AccessibilityInjector$TextToSpeechWrapper$1.onInit(AccessibilityInjector.java:753) * ... ... * at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:321) */ private void disableAccessibility() { if (Build.VERSION.SDK_INT == 17/*4.2 (Build.VERSION_CODES.JELLY_BEAN_MR1)*/) { Context context; if ((context = getContext()) != null) { try { AccessibilityManager am = (AccessibilityManager) context.getSystemService(Context.ACCESSIBILITY_SERVICE); if (!am.isEnabled()) { return; } Method set = am.getClass().getDeclaredMethod("setState", int.class); set.setAccessible(true); set.invoke(am, 0);/**{@link AccessibilityManager#STATE_FLAG_ACCESSIBILITY_ENABLED}*/ } catch (Exception e) { } } } }
3,改异常在编译SDK使用Android N后,出现,提示方法被空对象调用,报空指针。但gradle环境下编译则无此问题,怀疑是V7包的兼容问题。未做深究~
08-23 09:52:05.064 25223 25223 E AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.AppCompatBackgroundHelper.a()' on a null object reference 08-23 09:52:05.064 25223 25223 E AndroidRuntime: at android.support.v7.widget.AppCompatButton.setBackgroundDrawable(AppCompatButton.java:86) 08-23 09:52:05.064 25223 25223 E AndroidRuntime: at android.view.View.setBackground(View.java:17221) 08-23 09:52:05.064 25223 25223 E AndroidRuntime: at android.view.View.<init>(View.java:4328) 08-23 09:52:05.064 25223 25223 E AndroidRuntime: at android.widget.TextView.<init>(TextView.java:677) 08-23 09:52:05.064 25223 25223 E AndroidRuntime: at android.widget.Button.<init>(Button.java:109) 08-23 09:52:05.064 25223 25223 E AndroidRuntime: at android.widget.Button.<init>(Button.java:105) 08-23 09:52:05.064 25223 25223 E AndroidRuntime: at android.support.v7.widget.AppCompatButton.<init>(AppCompatButton.java:64) 08-23 09:52:05.064 25223 25223 E AndroidRuntime: at android.support.v7.widget.AppCompatButton.<init>(AppCompatButton.java:60) 08-23 09:52:05.064 25223 25223 E AndroidRuntime: at android.support.v7.internal.a.a.a(AppCompatViewInflater.java:101) 08-23 09:52:05.064 25223 25223 E AndroidRuntime: at android.support.v7.app.u.onCreateView(AppCompatDelegateImplV7.java:7886) 08-23 09:52:05.064 25223 25223 E AndroidRuntime: at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44)