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();  
    
        }  
    
    }  
  • 相关阅读:
    Springboot自定义打包
    综合项目计科一班第十组
    java课程设计阶段一 个人设计
    基础练习(02)十进制化二进制01字串
    基础练习(01)闰年判断
    数字电路实验(06)555定时器及其应用:多谐振荡器
    数字电路实验(05)二进制计数器设计
    数字电路实验(04)中规模组合逻辑电路实验3:译码器及其应用
    数字电路实验(03)中规模组合逻辑电路实验1:选择器及其应用
    习题02(01)产品抽检
  • 原文地址:https://www.cnblogs.com/hello-studio/p/9640957.html
Copyright © 2011-2022 走看看