WebView相关知识-案例1
1.加载网页要用WebView控件
2.要想支持js就要设置 webview.getSettings().setJavaScriptEnabled(true);
3.webview.loadUrl可以加载本地的html页面也可以加载网络html页面,还可以调用js的方法 webview.loadUrl("file:///android_asset/JavaCallJS1.html");
放html页面的时候是放在assets目录下,代码加载的时候: file:///android_asset/vido/xxxxx.html
4.在Android中要从html页面中弹出对话框需要
//支持从html中弹出对话框 //webview.setWebChromeClient(new WebChromeClient());
WebView相关知识-案例2 --js调用java
// 添加一个对象, 让JS可以访问该java对象的方法, 该java对象中可以调用JS中的方法 //注意Java调用JS的时候addJavascriptInterface是不必须的 mWebView.addJavascriptInterface(getHtmlObject(), "yangguangfu");
html中点击事件
调用yangguangfu(对应的是一个接口) 对应的JavacallHtml方法
WebView相关知识-案例3-js-调用Java的运用场景
1.从网页拨打电话 2.从网页中调用系统播放器并且播放 3.网页中吊起系统的邮件客户端
1.webView.loadUrl("file:///android_asset/JsCallJava.html");
2.webView.addJavascriptInterface(new Atguigu(), "Android");
3.加载数据
4.调用了Java代码中的方法showcontacts(),代码如下:
// Html调用此方法传递数据
public void showcontacts() {
handler.post(new Runnable() {
@Override
public void run() {
Log.e(TAG, "java --showcontacts---");
// 下面的代码建议在子线程中调用
String json = "[{\"name\":\"阿福\", \"amount\":\"100000\", \"phone\":\"18600012345\"}]";
// 调用JS中的方法
webView.loadUrl("javascript:show('" + json + "')");//加载电话
//视频信息
String jsonVideo = "[{\"name\":\"我是视频点击播放\", \"amount\":\"9999\", \"phone\":\"http://10.0.2.2:8080/oppo.mp4\"}]";
webView.loadUrl("javascript:showvideo('" + jsonVideo + "')");//视频
}
});
5.java调用js代码中的show()方法,作用是在html页面中显示数据
function show(jsondata){
var jsonobjs = eval(jsondata);
var table = document.getElementById("personTable");
for(var y=0; y<jsonobjs.length; y++){
var tr = table.insertRow(table.rows.length);
var td1 = tr.insertCell(0);
var td2 = tr.insertCell(1);
td2.align = "center";
var td3 = tr.insertCell(2);
td3.align = "center";
td1.innerHTML = jsonobjs[y].name;
td2.innerHTML = jsonobjs[y].amount;
td3.innerHTML = "<a href='javascript:Android.call(\""+ jsonobjs[y].phone+ "\")'>"+ jsonobjs[y].phone+ "</a>";
}
}
6.点击的时候调用了java的call方法,并且传递参数给java代码 javascript:Android.call(\""+ jsonobjs[y].phone+ "\")//电话 javascript:Android.playVideo(\""+ jsonobjs[y].phone+ "\")//视频
7.Java中的call方法就去拨打电话了
public void call(String phone) {
Log.e(TAG, "java --call(String phone)---==" + phone);
startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:"
+ phone)));
}
8.如果是视频,就调用Java中的playVideo方法
public void playVideo(String videoUrl) {
Log.e(TAG, "java --playVideo(String videoUrl)---==" + videoUrl);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(videoUrl), "video/*");
startActivity(intent);
}