zoukankan      html  css  js  c++  java
  • Android中Webview与javascript的交互(互相调用)

    第一步:

    加载本地写好的html文件(定义好js中提供给android调用的方法 funFromjs(),和android提供给js调用的对象接口fun1FromAndroid(String name)),放在 assets目录下。

    <body>  
    
        <a>js中调用本地方法</a>  
    
        <script>  
    
          
    
        function funFromjs(){  
    
            document.getElementById("helloweb").innerHTML="HelloWebView,i'm from js";  
    
        }  
    
        var aTag = document.getElementsByTagName('a')[0];  
    
        aTag.addEventListener('click', function(){  
    
            //调用android本地方法  
    
            myObj.fun1FromAndroid("调用android本地方法fun1FromAndroid(String name)!!");  
    
            return false;  
    
        }, false);  
    
        </script>  
    
        <p></p>  
    
        <div id="helloweb">   
    
      
    
        </div>  
    
    </body>  
    实现android工程与js交互的相关代码
    
    android主题代码:
    
    
    
    @Override  
    
       protected void onCreate(Bundle savedInstanceState) {  
    
           super.onCreate(savedInstanceState);  
    
           setContentView(R.layout.activity_main);  
    
           //初始化  
    
           initViews();  
    
      
    
           //设置编码  
    
           mWebView.getSettings().setDefaultTextEncodingName("utf-8");  
    
           //支持js  
    
           mWebView.getSettings().setJavaScriptEnabled(true);  
    
           //设置背景颜色 透明  
    
           mWebView.setBackgroundColor(Color.argb(0, 0, 0, 0));  
    
           //设置本地调用对象及其接口  
    
           mWebView.addJavascriptInterface(new JavaScriptObject(mContext), "myObj");  
    
           //载入js  
    
           mWebView.loadUrl("file:///android_asset/test.html");  
    
             
    
           //点击调用js中方法  
    
           mBtn1.setOnClickListener(new View.OnClickListener() {  
    
      
    
               @Override  
    
               public void onClick(View v) {  
    
                   mWebView.loadUrl("javascript:funFromjs()");  
    
                   Toast.makeText(mContext, "调用javascript:funFromjs()", Toast.LENGTH_LONG).show();  
    
               }  
    
           });  
    
      
    
       }  
    
    
    
    js调用的android对象方法定义
    
    
    
    public class JavaScriptObject {  
    
        Context mContxt;  
    
        @JavascriptInterface //sdk17版本以上加上注解  
    
        public JavaScriptObject(Context mContxt) {  
    
            this.mContxt = mContxt;  
    
        }  
    
      
    
        public void fun1FromAndroid(String name) {  
    
            Toast.makeText(mContxt, name, Toast.LENGTH_LONG).show();  
    
        }  
    
      
    
        public void fun2(String name) {  
    
            Toast.makeText(mContxt, "调用fun2:" + name, Toast.LENGTH_SHORT).show();  
    
        }  
    
    }  
  • 相关阅读:
    基于ZooKeeper和Thrift构建动态RPC调用
    菜鸡的Java笔记 api 文档
    菜鸡的Java笔记 第二十四
    菜鸡的Java笔记 第二十三
    菜鸡的Java笔记 第二十二
    菜鸡的Java笔记 实践
    Python 函数 参数传递
    python 函数的定义及调用语法,map 方法,函数嵌套递归
    java关键字
    菜鸡的Java笔记 第二十一 final 关键字
  • 原文地址:https://www.cnblogs.com/hello-studio/p/9640957.html
Copyright © 2011-2022 走看看