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();  
    
        }  
    
    }  
  • 相关阅读:
    多个自定义覆盖物注册点击事件,点击某个覆盖物后获得它的坐标
    C# 文件操作(全部) 追加、拷贝、删除、移动文件、创建目录 修改文件名、文件夹名
    如何添加EXEStealth 2.5x 壳
    PACS系统简易
    好用的后端模版
    E信通项目总结[转]
    平台型产品的设计思路[转]
    baidu思维脑图在线编辑器
    Web 前端攻防(2014版)-baidu ux前端研发部
    访谈标叔:给新人设计师的建议【转】
  • 原文地址:https://www.cnblogs.com/hello-studio/p/9640957.html
Copyright © 2011-2022 走看看