webview调用android代码

在开发的时候经常会用到webview,必然会涉及到webview与客户端的交互,比如在网页上进行某个操作后,需要在app上显示一个提示,提示内容由网页提供,这时候就需要js来调用客户端的java代码了。

webview提供了一个方法addJavascriptInterface()来满足这种需求。

具体步骤:

  1. 客户端定义一个类,并定义需要的方法,例如:
    public class WebAppInterface {
    Context mContext;

            /**
    * Instantiate the interface and set the context
    */
    
        WebAppInterface(Context c) {
            mContext = c;
        }
    
        /**
         * Show a toast from the web page
         */
        @JavascriptInterface
        public void showToastContent(String content) {
    
        }
    

    }

    注意,在方法定义前加上@JavascriptInterface注解。
    
    1. 生成第一步中定义的类的实例并添加给webview。

      webView.addJavascriptInterface(new WebAppInterface(getActivity()), "TestObject");
      
      

    这里的"TestObject"是随便起的名字,你可以改成其他的。这个名字主要是让webview的js调用的。

  2. 在js中通过"TestObject"对象调用客户端方法
    TestObject.showToastContent("haha")

备上一段官网关于这个内容的代码:

class JsObject {
    @JavascriptInterface
    public String toString() { return "injectedObject"; }
 }
 webView.addJavascriptInterface(new JsObject(), "injectedObject");
 webView.loadData("", "text/html", null);
 webView.loadUrl("javascript:alert(injectedObject.toString())");
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容