zoukankan      html  css  js  c++  java
  • android webview与jquery mobile相互通信

    最近做android项目中遇到要在webview中做与js交互相关的东东,涉及到js中调用android本地的方法,于是查了资料整理了一下android和js互相调用的过程。如下demo,demo的主要实现过程如下:通过加载本地的html文件(里面有js脚本),实现android本地方法和js中的交互。

    第一步:

    mainfest.xml中加入网络权限

     

    1. <uses-permission android:name="android.permission.INTERNET" />  

    第二步:

     

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

     

    1. <body>  
    2.     <a>js中调用本地方法</a>  
    3.     <script>  
    4.       
    5.     function funFromjs(){  
    6.         document.getElementById("helloweb").innerHTML="HelloWebView,i'm from js";  
    7.     }  
    8.     var aTag = document.getElementsByTagName('a')[0];  
    9.     aTag.addEventListener('click', function(){  
    10.         //调用android本地方法  
    11.         myObj.fun1FromAndroid("调用android本地方法fun1FromAndroid(String name)!!");  
    12.         return false;  
    13.     }, false);  
    14.     </script>  
    15.     <p></p>  
    16.     <div id="helloweb">   
    17.   
    18.     </div>  
    19. </body>  


    第三步:

     

    实现android工程与js交互的相关代码

    android主题代码:

     

    1. @SuppressLint({ "JavascriptInterface""SetJavaScriptEnabled" })  
    2.    @Override  
    3.    protected void onCreate(Bundle savedInstanceState) {  
    4.        super.onCreate(savedInstanceState);  
    5.        setContentView(R.layout.activity_main);  
    6.        //初始化  
    7.        initViews();  
    8.   
    9.        //设置编码  
    10.        mWebView.getSettings().setDefaultTextEncodingName("utf-8");  
    11.        //支持js  
    12.        mWebView.getSettings().setJavaScriptEnabled(true);  
    13.        //设置背景颜色 透明  
    14.        mWebView.setBackgroundColor(Color.argb(0000));  
    15.        //设置本地调用对象及其接口  
    16.        mWebView.addJavascriptInterface(new JavaScriptObject(mContext), "myObj");  
    17.        //载入js  
    18.        mWebView.loadUrl("file:///android_asset/test.html");  
    19.          
    20.        //点击调用js中方法  
    21.        mBtn1.setOnClickListener(new View.OnClickListener() {  
    22.   
    23.            @Override  
    24.            public void onClick(View v) {  
    25.                mWebView.loadUrl("javascript:funFromjs()");  
    26.                Toast.makeText(mContext, "调用javascript:funFromjs()", Toast.LENGTH_LONG).show();  
    27.            }  
    28.        });  
    29.   
    30.    }  

    js调用的android对象方法定义

     

     

    1. public class JavaScriptObject {  
    2.     Context mContxt;  
    3.   
    4.     public JavaScriptObject(Context mContxt) {  
    5.         this.mContxt = mContxt;  
    6.     }  
    7.   
    8.     public void fun1FromAndroid(String name) {  
    9.         Toast.makeText(mContxt, name, Toast.LENGTH_LONG).show();  
    10.     }  
    11.   
    12.     public void fun2(String name) {  
    13.         Toast.makeText(mContxt, "调用fun2:" + name, Toast.LENGTH_SHORT).show();  
    14.     }  
    15. }  
  • 相关阅读:
    json 拼二维json数组
    lnmp 环境搭建
    lnmp git ruby sass 安装
    制定clone的用户名
    git branch 重命名
    sql命令创建数据库
    layerui
    弹出确认框,打开新窗口
    Ajax请求小结
    .net core注入服务
  • 原文地址:https://www.cnblogs.com/lovefan/p/3557632.html
Copyright © 2011-2022 走看看