`
dawuafang
  • 浏览: 1142641 次
文章分类
社区版块
存档分类
最新评论

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

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.webkit.WebView;

public class MainActivity extends Activity {
	private WebView webView;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		//加载页面
		webView = (WebView) findViewById(R.id.webView);
		//允许JavaScript执行
		webView.getSettings().setJavaScriptEnabled(true);
		//找到Html文件,也可以用网络上的文件
		webView.loadUrl("file:///android_asset/index.html");
		// 添加一个对象, 让JS可以访问该对象的方法, 该对象中可以调用JS中的方法
		webView.addJavascriptInterface(new Contact(), "contact");
	}

	private final class Contact {
		//JavaScript调用此方法拨打电话
		public void call(String phone) {
			startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phone)));
		}

		//Html调用此方法传递数据
		public void showcontacts() {
			String json = "[{\"name\":\"zxx\", \"amount\":\"9999999\", \"phone\":\"18600012345\"}]"; 
			// 调用JS中的方法
			webView.loadUrl("javascript:show('" + json + "')");
		}
	}
}

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>


拨打电话需要添加权限:

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


版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    android和javascript互相调用

    本示例将深入探讨如何实现Android和JavaScript的互相调用,以便于在混合应用开发中创建更加丰富的用户体验。 Android调用JavaScript: 在Android应用中,我们通常使用WebView来加载网页内容。通过WebView提供的`...

    android、js互相调用

    总结,Android与JavaScript的互相调用涉及到`WebView`组件、`WebViewClient`、`addJavascriptInterface()`、`evaluateJavascript()`等关键方法,以及`postMessage()`、`message`事件和URL Scheme等通信机制。...

    Android 与javascript相互调用

    Android 与 js 之间的调用Android开发之WebView的使用 WebView与javascript相互调用 .WebView不但可以运行一段HTML代码,还有一个重要特点,就是WebView可以同Javascript互相调用。 通过addJavascriptInterface...

    android中Webview与javascript的交互(互相调用)

    本篇文章将详细探讨Android中的WebView与JavaScript如何进行交互,包括互相调用的原理、步骤以及注意事项。 **一、WebView基础知识** 1. **WebView的引入**:在Android应用中,我们需要在布局XML文件中添加WebView...

    UE和Android互相调用

    总结,UE和Android互相调用涉及到多个层次的技术,包括UE的Android平台支持、Java与C++的交互、JNI编程、自定义UI设计、Blueprint逻辑以及性能优化。理解并熟练掌握这些知识点,将有助于在Android设备上创建引人入胜...

    Android与H5交互相互调用对方的方法

    本教程将详细介绍如何在Android与H5之间进行相互调用,让Java与JavaScript之间实现无缝通信。 首先,我们要了解Android中的WebView组件。WebView是Android SDK提供的一种原生控件,它允许我们在Android应用中加载和...

    android与js互相调用

    本文将深入探讨如何在Android和JavaScript之间实现互相调用,包括Android调用JS的方法以及JS如何调用Android的特定功能,如输入文字到网页、访问本地相册、使用摄像头拍照以及播放本地视频。 一、Android调用...

    Android原生java语句 和html js互相调用 传递参数

    总结来说,Android与HTML JavaScript的互调主要依赖`WebView`的`addJavascriptInterface`和`loadUrl`方法。Java端创建一个对象并暴露给JavaScript,JavaScript端通过`window对象`调用这些方法。同时,Android也可以...

    Android 和 IOS WebView javaScript与 Native 互相调用(JS 与O-C Java )

    本文将深入探讨如何在Android和iOS中实现JavaScript与原生代码的互相调用。 **一、Android中的JavaScript与Java互相调用** 1. **JavaScript调用Java:** 在Android中,我们可以使用`WebView`的`...

    vue-android互相调用源码.zip

    在这种情况下,Android的Java或Kotlin代码可以通过JavaScript接口(JS Bridge)调用`callJS`,从而实现Android和Vue.js之间的通信。 Android与Vue.js的互调通常涉及以下几个关键步骤: 1. **建立JS Bridge**:...

    android中实现JavaScript与Java之间实现互相调用

    在Android开发中,有时我们需要在Java代码和JavaScript之间进行交互,比如从JavaScript中触发Android原生功能,或者从Android端向网页注入数据。这个过程通常涉及到Android的WebView组件和JavaScript接口的实现。...

    android demo,android调用js方法

    这个方法允许我们在JavaScript和Android之间创建一个桥梁,让它们可以互相调用方法。例如: ```java WebView webView = (WebView) findViewById(R.id.web_view); webView.getSettings().setJavaScriptEnabled(true)...

    android使用html,实现android和JS之间的互相有参、无参调用

    注意,为了安全起见,从Android 4.2(API级别17)开始,应该使用`@JavascriptInterface`注解标记那些需要从JavaScript中调用的方法,以防止恶意代码访问。 在HTML文件中,我们可以像调用任何JavaScript函数一样调用...

    Android总结之WebView与Javascript交互(互相调用)

    本文将详细讲解如何在Android的WebView与JavaScript之间进行数据交互,即互相调用彼此的功能。 首先,为了实现WebView与JavaScript的交互,必须确保WebView支持JavaScript。在AndroidManifest.xml文件中添加网络...

    Android webview和js互相调用实现方法

    这个方法允许我们在JavaScript中创建一个对象,该对象对应于Android中的一个类实例,从而实现JavaScript方法调用Android方法。以下是一个简单的示例: ```java webView.addJavascriptInterface(new JsBridge(), "wv...

    Android Java和HTML通过JS相互调用

    本文将深入探讨如何实现Android Java代码与HTML中的JavaScript互相调用,并通过一个名为"MyWebviewSample"的示例项目来具体说明。 首先,我们要了解WebView组件。WebView是Android SDK提供的一种用于在应用内展示...

    Android与Js互调

    本篇主要介绍如何实现Android与JavaScript的互调,以及在Java和Js之间进行互相调用的方法。 首先,Android中的`WebView`组件是实现Android与JavaScript交互的基础。`WebView`是一个可以加载网页的视图,它可以解析...

Global site tag (gtag.js) - Google Analytics