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

Android与Javascript交互示例(一)

[java]
package cn.testjavascript; 
import android.os.Bundle; 
import android.webkit.WebChromeClient; 
import android.webkit.WebView; 
import android.app.Activity; 
/**
 * Demo描述:
 * JavaScript调用Android中的方法
 * 即点击Html中按钮,调用Android中的方法
 * 
 * 参考资料:
 * http://blog.csdn.net/r8hzgemq/article/details/8480390
 */ 
public class MainActivity extends Activity { 
   private WebView mWebView; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        init(); 
    } 
    private void init(){ 
        mWebView=(WebView) findViewById(R.id.webView); 
        initWebViewSettings(); 
        //加载本地Html文件  
        mWebView.loadUrl("file:///android_asset/error.html"); 
        //实现Android与Javascript的交互  
        //注意addJavascriptInterface方法中第二参数  
        //它表示我们的java对象javaClass的别名.这样js就可以通过该别名来调用Android中的方法  
        //即js代码中的:  
        //window.js_invoke.goNetSetting();  
        //window.js_invoke.reload();  
        JavaClass javaClass=new JavaClass(MainActivity.this,mWebView, "http://www.ifeng.com/"); 
        mWebView.addJavascriptInterface(javaClass, "js_invoke"); 
    } 
    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); 
    } 
    private class TestJSWebChromeClient extends WebChromeClient{ 
        @Override 
        public void onProgressChanged(WebView view, int newProgress) { 
            super.onProgressChanged(view, newProgress); 
            System.out.println("加载中  newProgress="+newProgress); 
        } 
    } 
     

package cn.testjavascript;
import android.os.Bundle;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.app.Activity;
/**
 * Demo描述:
 * JavaScript调用Android中的方法
 * 即点击Html中按钮,调用Android中的方法
 *
 * 参考资料:
 * http://blog.csdn.net/r8hzgemq/article/details/8480390
 */
public class MainActivity extends Activity {
   private WebView mWebView;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  init();
 }
 private void init(){
  mWebView=(WebView) findViewById(R.id.webView);
  initWebViewSettings();
  //加载本地Html文件
  mWebView.loadUrl("file:///android_asset/error.html");
  //实现Android与Javascript的交互
  //注意addJavascriptInterface方法中第二参数
  //它表示我们的java对象javaClass的别名.这样js就可以通过该别名来调用Android中的方法
  //即js代码中的:
  //window.js_invoke.goNetSetting();
  //window.js_invoke.reload();
  JavaClass javaClass=new JavaClass(MainActivity.this,mWebView, "http://www.ifeng.com/");
  mWebView.addJavascriptInterface(javaClass, "js_invoke");
 }
 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);
 }
 private class TestJSWebChromeClient extends WebChromeClient{
  @Override
  public void onProgressChanged(WebView view, int newProgress) {
   super.onProgressChanged(view, newProgress);
   System.out.println("加载中  newProgress="+newProgress);
  }
 }
 
}

 

JavaClass如下:

[java]
package cn.testjavascript; 
import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.webkit.WebView; 
public class JavaClass { 
    private Context context; 
    private String url; 
    private WebView webView; 
 
    public JavaClass(Context context, WebView webView,String url) { 
        this.context = context; 
        this.webView = webView; 
        this.url = url; 
    } 
 
    public void goNetSetting() { 
        ((Activity) this.context).startActivityForResult 补充:移动开发 , Android ,

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