当前位置:编程学习 > JAVA >>

Android与Javascript交互示例(二)

MainActivity如下:

[java]
package cn.testjavascript; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.webkit.WebView; 
import android.widget.Button; 
import android.app.Activity; 
/**
 * Demo描述:
 * JavaScript与Android中的方法
 * 的相互调用
 * 
 * 参考资料:
 *   */ 
public class MainActivity extends Activity { 
   private WebView mWebView; 
   private Button mButton; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        init(); 
    } 
    private void init(){ 
         
        //以下为Javascript调用Java--------------------------  
        mWebView=(WebView) findViewById(R.id.webView); 
        initWebViewSettings(); 
        //加载本地Html文件  
        mWebView.loadUrl("file:///android_asset/test.html"); 
        //注意:  
        //addJavascriptInterface方法中第二参数  
        //它表示我们的java对象javaClass的别名.这样js就可以通过该别名来调用Android中的方法  
        //即js代码中的:  
        //window.testjs.firstFunction  
        //window.testjs.secondFunction  
        JavaClass javaClass=new JavaClass(MainActivity.this); 
        mWebView.addJavascriptInterface(javaClass, "testjs"); 
         
         
         
        //以下为Java调用Javascript--------------------------  
        //注意:  
        //在调用带参数的Javascript方法时  
        //参数的写法,如此处的  
        //mWebView.loadUrl("javascript:javacalljswithargs("+"'stringArg'"+")");  
        //不加单引号是错误的  
        mButton=(Button) findViewById(R.id.button); 
        mButton.setOnClickListener(new OnClickListener() { 
            @Override 
            public void onClick(View v) { 
                //调用Javascript中的无参方法                  
                mWebView.loadUrl("javascript:javacalljs()"); 
                 //调用Javascript中带参数的方法        
                mWebView.loadUrl("javascript:javacalljswithargs("+"'stringArg'"+")"); 
                 
            } 
        }); 
    } 
    private void initWebViewSettings(){ 
        mWebView.setVerticalScrollBarEnabled(false); 
        mWebView.setHorizontalScrollBarEnabled(false); 
        mWebView.getSettings().setJavaScriptEnabled(true); 
        mWebView.getSettings().setSupportZoom(true); 
        mWebView.getSettings().setDomStorageEnabled(true); 
        mWebView.getSettings().setPluginsEnabled(true); 
        mWebView.requestFocus(); 
        mWebView.getSettings().setUseWideViewPort(true); 
        mWebView.getSettings().setLoadWithOverviewMode(true); 
        mWebView.getSettings().setSupportZoom(true); 
        mWebView.getSettings().setBuiltInZoomControls(true); 
    } 
     

package cn.testjavascript;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebView;
import android.widget.Button;
import android.app.Activity;
/**
 * Demo描述:
 * JavaScript与Android中的方法
 * 的相互调用
 *
 * 参考资料:
 *

 */
public class MainActivity extends Activity {
   private WebView mWebView;
   private Button mButton;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  init();
 }
 private void init(){
  
  //以下为Javascript调用Java--------------------------
  mWebView=(WebView) findViewById(R.id.webView);
  initWebViewSettings();
  //加载本地Html文件
  mWebView.loadUrl("file:///android_asset/test.html");
  //注意:
  //addJavascriptInterface方法中第二参数
  //它表示我们的java对象javaClass的别名.这样js就可以通过该别名来调用Android中的方法
  //即js代码中的:
  //window.testjs.firstFunction
  //window.testjs.secondFunction
  JavaClass javaClass=new JavaClass(MainActivity.this);
  mWebView.addJavascriptInterface(javaClass, "testjs");
  
  
  
  //以下为Java调用Javascript--------------------------
  //注意:
  //在调用带参数的Javascript方法时
  //参数的写法,如此处的
  //mWebView.loadUrl("javascript:javacalljswithargs("+"'stringArg'"+")");
补充:移动开发 , Android ,

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,