最近android项目中用到了与html之间的交互,总结了一下,还是比较全的,主要有
java调用js函数,js调用java函数,浏览器中通过链接打开app
private void initWebView() {
WebSettings webSettings = webView.getSettings();
//设置支持javaScript脚步语言
webSettings.setJavaScriptEnabled(true);
//支持双击-前提是页面要支持才显示
webSettings.setUseWideViewPort(true);
//支持缩放按钮-前提是页面要支持才显示
webSettings.setBuiltInZoomControls(true);
//设置客户端-不跳转到默认浏览器中
webView.setWebViewClient(new WebViewClient());
//加载网络资源
// webView.loadUrl("http://atguigu.com/teacher.shtml");
//加载本地资源
webView.loadUrl("file:///android_asset/index.html");
setContentView(webView);
}
/**
* Java调用javaScript
* @param numebr
*/
private void login(String numebr) {
webView.loadUrl("javascript:javaCallJs("+"'"+numebr+"'"+")");
setContentView(webView);
function javaCallJs(){
document.getElementById("content").innerHTML +=
"
java调用了js无参函数";
}
function javaCallJs(arg){
document.getElementById("content").innerHTML =
("欢迎:"+arg );
}
1_配置Javascript接口
//设置支持js调用java
webView.addJavascriptInterface(new AndroidAndJSInterface(),"Android");//此处"Android"字符串要与下面的onclick中"window.Android.showToast()"的Android字符串保持一致
2_实现Javascript接口类
/**
* js可以调用该类的方法
*/
class AndroidAndJSInterface{
@JavascriptInterface
public void showToast( ){
Toast.makeText(JavaAndJSActivity.this, "我被js调用了", Toast.LENGTH_SHORT).show();
}
}
当点击webview内嵌网页时该按钮时,就可以调用java中的showToast函数了,
当然showToast函数也可以携带参数:
/**
* js可以调用该类的方法
*/
class AndroidAndJSInterface{
@JavascriptInterface
public void showToast( ){
Toast.makeText(JavaAndJSActivity.this, "我被js调用了", Toast.LENGTH_SHORT).show();
}
public void showToast( String mString){
Toast.makeText(JavaAndJSActivity.this, "我被js调用了"+mString, Toast.LENGTH_SHORT).show();
}
}
1_首先在编写一个简单的html页面
title
打开app
2_在Android本地app的配置
在AndroidManifest的清单文件里的intent-filte中加入如下元素:
name1与name2要对应相同
代码如下:
3_如何通过这个方法获取网页带过来的数据
传数据的方式
打开app
(1).通过浏览器打开这个网页的,那么获取数据的方式为:
Uri uri = getIntent().getData();
String test1= uri.getQueryParameter("arg0");
String test2= uri.getQueryParameter("arg1");
(2)如果使用webview访问该网页,获取数据的操作为:
复制代码
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Uri uri=Uri.parse(url);
if(uri.getScheme().equals("name1")&&uri.getHost().equals("name2")){
String arg0=uri.getQueryParameter("arg0");
String arg1=uri.getQueryParameter("arg1");
}else{
view.loadUrl(url);
}
return true;
}
});