zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

Android中webView调用JS出错的解决办法

AndroidJSwebview 调用 解决办法 出错
2023-06-13 09:15:42 时间

问题

   webView调用JS出错。

复制代码代码如下:


   classTestJS{
       ......
       publicTestJS(){
       }
       
       publicvoidsave(Stringdata){           
           webView.loadUrl("javascript:alert("+data+")");
       }
       ......
   }

复制代码代码如下:


   W/WebView(2088):java.lang.Throwable:AWebViewmethodwascalledonthread"JavaBridge".AllWebViewmethodsmustbecalledonthesamethread.(ExpectedLooperLooper(main,tid1){b3dbcb18}calledonLooper(JavaBridge,tid120){b44a1af8},FYImainLooperisLooper(main,tid1){b3dbcb18})
   W/WebView(2088):    atandroid.webkit.WebView.checkThread(WebView.java:2063)
   W/WebView(2088):    atandroid.webkit.WebView.loadUrl(WebView.java:794)
   W/WebView(2088):    atcom.ue.oa.activity.XFormActivity.alert(XFormActivity.java:180)
   W/WebView(2088):    atcom.ue.oa.activity.XFormActivity$FormActions.save(XFormActivity.java:193)
   W/WebView(2088):    atcom.android.org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(NativeMethod)
   W/WebView(2088):    atcom.android.org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:27)
   W/WebView(2088):    atandroid.os.Handler.dispatchMessage(Handler.java:102)
   W/WebView(2088):    atandroid.os.Looper.loop(Looper.java:136)
   W/WebView(2088):    atandroid.os.HandlerThread.run(HandlerThread.java:61)

解决

将save方法修改为:

复制代码代码如下:
   publicvoidsave(Stringdata){           
       webView.post(newRunnable(){
           @Override
           publicvoidrun(){
               webView.loadUrl("javascript:alert("+data+")");
           }
       });
   }

以上就是解决方法了,是不是很简单呢,希望小伙伴们能够喜欢。