Android通过webView和js交互
首先Android通过findById找到WebView
获取webview的Settings,设置字符集编码,启用javascript,并添加js交互接口类,
//找到webView
webView = (WebView) this.findViewById(R.id.webView);
// 设置字符集编码
webView.getSettings().setDefaultTextEncodingName("UTF-8");
// 开启JavaScript支持
webView.getSettings().setJavaScriptEnabled(true);
// 传递一个Java对象,同时给他命名,这个对象可以在js中调用这个对象的方法
webView.addJavascriptInterface(new MyObject(this, handler), "MyObject");
这样在webView中就可以调用MyObject这个类中的方法,调用方法为
javascript:MyObject.method(); 或者
windows.MyObject.method(//传值)
Android调用webView中的方法是
webView.loadUrl("javascript:jsmethod()");
//设置webView的监听
webview.setwebViewClient(new webViewClient());
webViewClient是webview的监听类,自己最好继承然后自定义
其中最主要的有四个方法
1 onReceivedError 在页面出现错误的时候回调
2 onPageStarted 这个方法每次都会调用, 当页面开始加载时调用
3 onPageFinished 页面加载完成时调用
4 shouldOverrideUrlLoading 不是每次都执行,若执行则在2之前执行,第一次加载时不会调用,加载完成后,在页面上点击链接时才会调用此方法.
加载Android的asset文件夹下的html文件
// 加载assets目录下的文件
String url = "file:///android_asset/index.html";
webView.loadUrl(url);
//直接可以加载sd卡上文
webview.loadUrl("file:///mnt/sdcard/webview_demo/jsurvey/test.html" );
//直接可以加载data/data上文
webview.loadUrl("file:///data/data/com.smit.livevideo/files/iCastHtmlEngineAsset/test.html" );
首先Android通过findById找到WebView
获取webview的Settings,设置字符集编码,启用javascript,并添加js交互接口类,
//找到webView
webView = (WebView) this.findViewById(R.id.webView);
// 设置字符集编码
webView.getSettings().setDefaultTextEncodingName("UTF-8");
// 开启JavaScript支持
webView.getSettings().setJavaScriptEnabled(true);
// 传递一个Java对象,同时给他命名,这个对象可以在js中调用这个对象的方法
webView.addJavascriptInterface(new MyObject(this, handler), "MyObject");
这样在webView中就可以调用MyObject这个类中的方法,调用方法为
javascript:MyObject.method(); 或者
windows.MyObject.method(//传值)
Android调用webView中的方法是
webView.loadUrl("javascript:jsmethod()");
//设置webView的监听
webview.setwebViewClient(new webViewClient());
webViewClient是webview的监听类,自己最好继承然后自定义
其中最主要的有四个方法
1 onReceivedError 在页面出现错误的时候回调
2 onPageStarted 这个方法每次都会调用, 当页面开始加载时调用
3 onPageFinished 页面加载完成时调用
4 shouldOverrideUrlLoading 不是每次都执行,若执行则在2之前执行,第一次加载时不会调用,加载完成后,在页面上点击链接时才会调用此方法.
加载Android的asset文件夹下的html文件
// 加载assets目录下的文件
String url = "file:///android_asset/index.html";
webView.loadUrl(url);
//直接可以加载sd卡上文
webview.loadUrl("file:///mnt/sdcard/webview_demo/jsurvey/test.html" );
//直接可以加载data/data上文
webview.loadUrl("file:///data/data/com.smit.livevideo/files/iCastHtmlEngineAsset/test.html" );