Android和JavaScript互相调用

Html页面和Java代码结合的方式一般用在界面常常被更改 的情况下,能够讲html放在网络中。软件一打开就会訪问网络获取到最新的界面。

缺点是会受到网络信号的影响,从而导致訪问速度慢。

1.用WebView来显示HTML代码

2.同意WebView运行JavaScript

webView.getSettings().setJavaScriptEnabled(true);

3.获取到HTML文件,也可从网络中获取

webView.loadUrl("file:///android_asset/index.html");   //HTML文件存放在assets目录中

4.加入一个对象, 让JS能够訪问该对象的方法, 该对象中也能够调用JS中的方法

webView.addJavascriptInterface(new Contact(), "contact");

完整演示样例代码例如以下:

效果图:

MainActivity

[java] view
plain
copy

  1. import android.app.Activity;
  2. import android.content.Intent;
  3. import android.net.Uri;
  4. import android.os.Bundle;
  5. import android.webkit.WebView;
  6. public class MainActivity extends Activity {
  7. private WebView webView;
  8. public void onCreate(Bundle savedInstanceState) {
  9. super.onCreate(savedInstanceState);
  10. setContentView(R.layout.main);
  11. //载入页面
  12. webView = (WebView) findViewById(R.id.webView);
  13. //同意JavaScript运行
  14. webView.getSettings().setJavaScriptEnabled(true);
  15. //找到Html文件,也能够用网络上的文件
  16. webView.loadUrl("file:///android_asset/index.html");
  17. // 加入一个对象, 让JS能够訪问该对象的方法, 该对象中能够调用JS中的方法
  18. webView.addJavascriptInterface(new Contact(), "contact");
  19. }
  20. private final class Contact {
  21. //JavaScript调用此方法拨打电话
  22. public void call(String phone) {
  23. startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phone)));
  24. }
  25. //Html调用此方法传递数据
  26. public void showcontacts() {
  27. String json = "[{\"name\":\"zxx\", \"amount\":\"9999999\", \"phone\":\"18600012345\"}]";
  28. // 调用JS中的方法
  29. webView.loadUrl("javascript:show(‘" + json + "‘)");
  30. }
  31. }
  32. }

HTML:

[html] view
plain
copy

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <title>Insert title here</title>
  6. <script type="text/javascript">
  7. function show(jsondata){
  8. var jsonobjs = eval(jsondata);
  9. var table = document.getElementById("personTable");
  10. for(var y=0; y<jsonobjs.length; y++){
  11. var tr = table.insertRow(table.rows.length);
  12. var td1 = tr.insertCell(0);
  13. var td2 = tr.insertCell(1);
  14. td2.align = "center";
  15. var td3 = tr.insertCell(2);
  16. td3.align = "center";
  17. td1.innerHTML = jsonobjs[y].name;
  18. td2.innerHTML = jsonobjs[y].amount;
  19. td3.innerHTML = "<a href=‘javascript:contact.call(\""+ jsonobjs[y].phone+ "\")‘>"+ jsonobjs[y].phone+ "</a>";
  20. }
  21. }
  22. </script>
  23. </head>
  24. <body onload="javascript:contact.showcontacts()">
  25. <table border="0" width="100%" id="personTable" cellspacing="0">
  26. <tr>
  27. <td width="30%">姓名</td>
  28. <td width="30%" align="center">存款</td>
  29. <td align="center">电话</td>
  30. </tr>
  31. </table>
  32. </body>
  33. </html>

拨打电话须要加入权限:

<uses-permission android:name="android.permission.CALL_PHONE" /

时间: 2025-01-02 16:13:47

Android和JavaScript互相调用的相关文章

Hybrid App开发模式中, IOS/Android 和 JavaScript相互调用方式

IOS:Objective-C 和 JavaScript 的相互调用 iOS7以前,iOS SDK 并没有原生提供 js 调用 native 代码的 API.但是 UIWebView 的一个 delegate 方法使我们可以做到让 js 需要调用时,通知 native.在 native 执行完相应调用后,可以用stringByEvaluatingJavaScriptFromString 方法,将执行结果返回给 js.这样,就实现了 js 与 native 代码的相互调用.具体让 js 通知 na

Android Webview 和Javascript交互,实现Android和JavaScript相互调用

在Android的开发过程中.遇到一个新需求.那就是让Java代码和Javascript代码进行交互.在IOS中实现起来很麻烦.而在Android中相对来说容易多了.Android对这种交互进行了很好的封装.我们可以很简单的用Java代码调用WebView中的js函数.也可以用WebView中的js来调用Android应用中的Java代码. 案例主要包含了: Html中调用Android方法 Android调用JS方法无参数 Android调用JS方法有参数 Android调用JS方法有参数且有

Android中Javascript中的调用

参考 张洋:2048-AI程序算法分析,并分析了android版本的源码,觉得android调用javascript代码可以很快复用web代码,提高开发效率,遂对android和javascript相互调用学习并记录. 一.什么是js与android交互? 通俗一点就是使用js代码调用java代码,或者使用java代码调用js代码.即混合编程. 二.为什么要使用js与java代码交互? 1.可以做一些js网页做本身处理不了的事情.例如:在网页上调用Android本地打电话,发短信功能.在网页上调

Android高手进阶教程(二十)之---Android与JavaScript方法相互调用!

在Android中通过WebView控件,可以实现要加载的页面与Android方法相互调用,我们要实现WebView中的addJavascriptInterface方法,这样html才能调用android方法,在这里我个人觉得有点和DWR相似. 为了让大家容易理解,我写了一个简单的Demo,具体步骤如下: 第一步:新建一个Android工程,命名为WebViewDemo(这里我在assets里定义了一个html页面). 第二步:修改main.xml布局文件,增加了一个WebView控件还有But

如何实现 javascript “同步”调用 app 代码

在 App 混合开发中,app 层向 js 层提供接口有两种方式,一种是同步接口,一种一异步接口(不清楚什么是同步的请看这里的讨论).为了保证 web 流畅,大部分时候,我们应该使用异步接口,但是某些情况下,我们可能更需要同步接口.同步接口的好处在于,首先 js 可以通过返回值得到执行结果:其次,在混合式开发中,app 层导出的某些 api 按照语义就应该是同步的,否则会很奇怪——一个可能在 for 循环中使用的,执行非常快的接口,比如读写某个配置项,设计成异步会很奇怪. 那么如何向 js 层导

Android与Javascript交互

转载请说明出处! 作者:kqw攻城狮 出处:个人站 | CSDN 本篇参考Android与HTML+JS交互入门 效果图 加载本地Html contentWebView = (WebView) findViewById(R.id.webview); // 加载Assets下的Html contentWebView.loadUrl("file:///android_asset/html/test.html"); 启用Javascript contentWebView.getSetting

高德地图组件在Android的应用以及Android与JavaScript的交互

最近在慕课网学习了关于高德地图组件的课程(其实就是一个广告,内容和官网的API完全一样),发现这个JavaScript API比Android API简单方便多了,于是就打算放在Android APP上来实现,花了一点小功夫,但是最终还是实现了,后来打算扩展的时候遇到个问题:就是高德官网有一个坐标拾取点(高德的坐标和我们平时取的坐标不一样,可以将高德坐标理解为中国的国标,直接获取的坐标是国际标准的坐标),后来发现有html文件直接实现了这个功能,于是就把这个html扒出来了,但是重点问题来了:如

android与javascript的交互

上一篇博文:Android WebView使用基础已经说了一些Android中WebView的基本使用. 本篇文章主要介绍WebView中的JavaScript代码的执行相关,已经JS代码与Android代码的互相调用. (因为本人对Web开发并不是很熟悉,所以如果有哪些地方说得不对,还请指正.) 在WebView中使用JavaScript 如果你想要载入的页面中用了JavaScript,你必须为你的WebView使能JavaScript. 一旦使能之后,你也可以自己创建接口在你的应用和Java

Html5 页面中 JavaScript 启动调用的三种方法比较

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 首先,来看一下 Html5 页面引用 JavaScript 代码的几种方式: 1.Html5 页面中使用 <script>  标签容纳