Android Webview中调用本地java方法

来源:互联网 发布:系统优化的意义 编辑:程序博客网 时间:2024/06/06 20:51

在网页调用本地的分享SDK 

class JsObject {     @JavascriptInterface     public String toString() { return "injectedObject"; } } webView.addJavascriptInterface(new JsObject(), "injectedObjectOfWoxue");  webView.setWebChromeClient(new WebChromeClient()); //设置webchromeclinet 之后 alter 才会起作用  
js端function toString()var b=window.injectedObjectOfWoxue.toString();alert(b);

java.lang.IllegalStateException: Calling View methods on another thread than the UI thread.at com.android.webview.chromium.WebViewChromium.createThreadException(WebViewChromium.java:268)at com.android.webview.chromium.WebViewChromium.checkThread(WebViewChromium.java:284)at com.android.webview.chromium.WebViewChromium.init(WebViewChromium.java:219)at android.webkit.WebView.<init>(WebView.java:516)at android.webkit.WebView.<init>(WebView.java:483)at android.webkit.WebView.<init>(WebView.java:463)at android.webkit.WebView.<init>(WebView.java:452)at java.lang.reflect.Constructor.constructNative(Native Method)at java.lang.reflect.Constructor.newInstance(Constructor.java:423)at android.view.LayoutInflater.createView(LayoutInflater.java:600)at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)at android.view.LayoutInflater.onCreateView(LayoutInflater.java:675)at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:700)at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)at android.view.LayoutInflater.inflate(LayoutInflater.java:498)at android.view.LayoutInflater.inflate(LayoutInflater.java:398)at android.view.LayoutInflater.inflate(LayoutInflater.java:354)at com.umeng.socialize.view.j.<init>(OauthDialog.java:145)at com.umeng.socialize.controller.impl.a.b(AuthServiceImpl.java:397)at com.umeng.socialize.controller.impl.a.doOauthVerify(AuthServiceImpl.java:239)at com.umeng.socialize.controller.impl.w.doOauthVerify(SocialServiceImpl.java:692)at com.umeng.socialize.controller.impl.n.a(ShareServiceImpl.java:595)at com.umeng.socialize.controller.impl.n.postShare(ShareServiceImpl.java:486)at com.umeng.socialize.controller.impl.w.postShare(SocialServiceImpl.java:392)at com.umeng.socialize.bean.e.onClick(InternalPlatform.java:36)at com.umeng.socialize.bean.SnsPlatform.performClick(SnsPlatform.java:111)at com.umeng.socialize.view.aj.a(ShareBoard.java:193)at com.umeng.socialize.view.aj.a(ShareBoard.java:176)at com.umeng.socialize.view.ak.onClick(ShareBoard.java:126)at android.view.View.performClick(View.java:4633)at android.view.View$PerformClick.run(View.java:19382)at android.os.Handler.handleCallback(Handler.java:733)at android.os.Handler.dispatchMessage(Handler.java:95)at android.os.Looper.loop(Looper.java:136)at android.os.HandlerThread.run(HandlerThread.java:61)

解决:

runOnUiThread(new Runnable() {    @Override     public void run() {         // Code for WebView goes here     } });  


http://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface%28java.lang.Object,%20java.lang.String%29


http://blog.csdn.net/zgjxwl/article/details/9627685


http://www.igooda.cn/jzjl/20141212737.html


http://www.pedant.cn/2014/07/04/webview-js-java-interface-research/


http://blog.sina.com.cn/s/blog_4e1e357d0101gju8.html


http://blog.csdn.net/changemyself/article/details/40212057


https://github.com/jesse01/WebViewJavascriptBridge/issues/1


0 0
原创粉丝点击