• 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();  
    
        }  
    
    }  
  • 相关阅读:
    树莓派3(Raspbain系统)安装.net环境
    CSS3实现鼠标悬停扩展效果
    WINIO64位模拟键鼠操作
    json在线校验
    阿里云ali-oss图片增加水印
    babel使用中不想使用 严格模式 如何去除?
    记录移动端html界面中底部输入框触发焦点时键盘会把输入框遮挡的问题
    nodejs 项目,请求返回Invalid Host header问题
    css如何画出类似原生的线条?
    js回到顶部 动画速度 (自己记录)
  • 原文地址:https://www.cnblogs.com/hello-studio/p/9640957.html
Copyright © 2020-2023  润新知