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. }  
  • 相关阅读:
    Allegro PCB Design GXL (legacy) 使用slide无法将走线推挤到焊盘的原因
    OrCAD Capture CIS 16.6 导出BOM
    Altium Designer (17.0) 打印输出指定的层
    Allegro PCB Design GXL (legacy) 将指定的层导出为DXF
    Allegro PCB Design GXL (legacy) 设置十字大光标
    Allegro PCB Design GXL (legacy) 手动更改元器件引脚的网络
    magento产品导入时需要注意的事项
    magento url rewrite
    验证台湾同胞身份证信息
    IE8对css文件的限制
  • 原文地址:https://www.cnblogs.com/lovefan/p/3557632.html
Copyright © 2011-2022 走看看