Android和javascript相互调用2
来源:互联网 发布:vb中通用对话框 编辑:程序博客网 时间:2024/05/16 09:47
package com.maiyu.jsdiaoyong;import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.webkit.JavascriptInterface;import android.webkit.WebView;import android.webkit.WebViewClient;/** * * @JavascriptInterface 必须添加js反射机制 */public class Main2Activity extends Activity { private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); //加载页面 webView = (WebView) findViewById(R.id.webView2); //允许JavaScript执行 webView.getSettings().setJavaScriptEnabled(true); webView.setWebViewClient(new MyWebViewClient()); //找到Html文件,也可以用网络上的文件 webView.loadUrl("file:/android_asset/index2.html"); // 添加一个对象, 让JS可以访问该对象的方法, 该对象中可以调用JS中的方法 webView.addJavascriptInterface(new Contact(), "contact"); } private final class Contact { //JavaScript调用此方法拨打电话 @JavascriptInterface public void call(String phone) { Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + phone)); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } //Html调用此方法传递数据 @JavascriptInterface public void showcontacts() { //必须另开线程进行JS方法调用(否则无法调用) webView.post(new Runnable() { @Override public void run() { String json = "[{\"name\":\"zxx\",\"amount\":\"9999999\",\"phone\":\"18600012345\"}]"; // 注意调用的JS方法名要对应上 // 调用JS中的方法 webView.loadUrl("javascript:show('" + json + "')"); } }); } } /** * webviewb必须实现的方法 ,解决 */ private class MyWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url.startsWith("tel:")) { //打电话 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(intent); } else if (url.startsWith("http:") || url.startsWith("https:")) { view.loadUrl(url); } return true; } }}
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script type="text/javascript"> 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:contact.call(\""+ jsonobjs[y].phone+ "\")'>"+ jsonobjs[y].phone+ "</a>"; } } </script></head><body onload="javascript:contact.showcontacts()"><table border="0" width="100%" id="personTable" cellspacing="0"> <tr> <td width="30%">姓名</td> <td width="30%" align="center">存款</td> <td align="center">电话</td> </tr></table></body></html>
阅读全文
1 0
- Android和javascript相互调用2
- Android和javascript相互调用
- JavaScript和Android代码相互调用
- Android Java和JavaScript代码相互调用
- Android和JavaScript相互调用初学
- Android:java和javascript相互调用
- Android:java和javascript相互调用
- Android:java和javascript相互调用
- Android 中 Java 和 JavaScript 相互调用
- android与javascript相互调用
- android与javascript相互调用
- android与javascript相互调用
- javascript和C#相互调用
- JS和javaScript相互调用
- Qt和JavaScript相互调用
- Android 和 javascript 之间交互(方法相互调用)
- Android Webview 和Javascript交互,实现Android和JavaScript相互调用
- android和js相互调用
- Spark运行架构
- jQuery效果
- 如何通过JCenter 和 Mavenue Central 从 Android Studio 分发自己的Library库
- 树的前/中/后遍历
- SDUT_2118 数据结构实验之链表三:链表的逆置
- Android和javascript相互调用2
- 还不知道阿里云证书服务如何配置部署,你out了
- mysql的常用的sql语句命令
- 网站图片页面的显示(图片标签)
- python 批量导入模块儿
- Spring 校验注解大全
- nodejs里redis的用法
- Pool类
- 关于空指针NULL、野指针、通用指针