问题备忘

未修复问题更新为已修复

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
 /**
     * 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);
        }
    }


2,

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)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值