`
jjjssh
  • 浏览: 77996 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Androd Html Demo js与java相互调用

阅读更多
sample demo

1.首先创建一个简单的android工程

2.修改layout文件main.xml
<?xml version="1.0" encoding="utf-8"?>  
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:orientation="vertical" >  
      
    <WebView
        android:id="@+id/web"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
    />
    
    <LinearLayout 
       android:orientation="vertical"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:layout_weight="1"
       android:gravity="bottom|right">
      
        <Button
		android:layout_height="wrap_content"
		android:id="@+id/Button_Send"
		android:text="javatojs"
		android:layout_width="400px"/>
     </LinearLayout>
</RelativeLayout> 


3.创建activity java类
package com.example.myandroidproj;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.os.Bundle;
import android.os.Handler;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import android.widget.Button;
import android.util.Log;


public class IChartJsDemoActivity extends Activity {
	
	private String TGA="IChartJsDemoActivity";
	private WebView webView;
	private Button send;
	private Handler handler;
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		initUI();
	}

	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.ichart_js_demo, menu);
		return true;
	}

	@SuppressLint("JavascriptInterface")
	public void initUI(){
		handler = new Handler();
		
		webView = (WebView)this.findViewById(R.id.web);
		webView.getSettings().setBuiltInZoomControls(true);
		webView.getSettings().setJavaScriptEnabled(true);
		webView.loadUrl("file:///android_asset/index.html");
		//放置页面js对象
		webView.addJavascriptInterface(new AndroidJsTool(), "androidJsTool");
		
		send = (Button) this.findViewById(R.id.Button_Send);
		send.setOnClickListener(new OnClickListener(){
			public void onClick(View v) {
				JSONArray arr =new JSONArray();
				for(int i=0;i<10;i++){
					JSONObject json =new JSONObject(); 
					 try {
						json.put("name", "jasion");
						json.put("country", "中国");
						json.put("mobile", "1882529831"+i);
						arr.put(json);
					} catch (JSONException e) {
						Log.e(TGA, e.getMessage());
						e.printStackTrace();
					}
					
				}
				String paramStr = arr.toString();
				//java 调用js
				webView.loadUrl("javascript:initData("+paramStr+")");
			}
			
		});
	}
	
	final class AndroidJsTool{
		//必须要加上这个注释,要不然html页面就访问不到这个方法
		@JavascriptInterface
		public void runOnAndroidJavaScript(final String str){
			handler.post(new Runnable(){
				public void run() {
					//测试js调用java
					Log.i(TGA, "hello world:"+str);
				}
			});
		}
	}
}


4.创建html文件 index.html,index.html文件要放在工程目录底下的assets里面
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script>
</script>
</head>
<body>
	<table id="personTable">
		<tr>
			<td style="color:blue;">名称</td>
			<td style="color:blue;">国家</td>
			<td style="color:blue;">电话</td>
		</tr>
	</table>
	<input type="text" id="wordsInput" /><br/>
	<input type="button" id="sayWords" onclick="sayWord()" value="send to java" />
</body>

<script>
function sayWord(){
	var words=document.getElementById("wordsInput").value;
	androidJsTool.runOnAndroidJavaScript(words);//调用android的函数
}

function initData(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].country;   
            td3.innerHTML = jsonobjs[y].mobile;   
        } 
}
</script>
</html>

  • 大小: 138.2 KB
分享到:
评论

相关推荐

    Android中JS与Java相互调用Demo

    综上所述,这个"Android中JS与Java相互调用Demo"主要演示了如何在Android应用中利用`WebView`组件实现JavaScript与Java的交互,这对于开发混合应用或者增强应用功能具有重要的实践价值。通过学习和理解这个Demo,...

    android JS与java代码相互调用

    在Android开发中,JavaScript(JS)与Java代码的相互调用是常见的需求,尤其是在混合式应用开发中。这种交互能够充分利用JavaScript的灵活性和Java的强大功能,实现更丰富的用户体验。本Demo旨在提供一个清晰、易懂...

    android中js与java间函数相互调用demo,支持中文传参,无乱码

    5. **Java调用JavaScript函数** 通过`WebView`的`loadUrl()`方法,我们可以执行JavaScript代码,从而调用JavaScript函数。例如: ```java webView.loadUrl("javascript:androidBridge.receiveFromJava('这是来自...

    android demo,webview_js(webview的js方法调用java方法)。

    本示例“android demo,webview_js”着重展示了如何通过Webview实现JavaScript调用Java方法的功能。这个功能对于创建混合式应用或者在原生应用中嵌入HTML5页面尤其有用。 首先,我们需要在Android布局文件中添加一...

    android demo,android调用js方法

    本文将深入探讨如何在Android应用中调用JavaScript方法,以实现Android(Java)与HTML5(JS)的交互,具体以"android demo, android调用js方法"为主题,通过一个名为"webview_js2(android调用js方法)"的示例进行讲解...

    android中js与java互动demo,绝对可以运行

    这个"java_js_demo"项目很可能包含了一个简单的Android应用,演示了如何通过`WebView`组件在Android应用中加载HTML页面,并实现JavaScript与Java之间的双向通信。开发者可以通过分析和运行这个示例,深入理解这一...

    android java和webview交互demo

    这篇资源文章“android java和webview交互demo”详细介绍了如何在Java驱动的Android应用中使用WebView,并通过JavaScript接口进行数据交换。 **一、WebView基本使用** 1. **添加依赖** 在AndroidManifest.xml中,...

    Webview与Javascript相互调用 (Android studio )demo

    本示例项目"Webview与Javascript相互调用 (Android Studio)"就是专门针对这一功能的演示,它提供了直接在Android Studio中运行的代码,帮助开发者理解和实践WebView与JavaScript之间的通信。 首先,我们来深入理解...

    android与js交互的demo

    本项目“android与js交互的demo”提供了一个示例,演示了如何在Android应用中加载HTML,并实现Android与JavaScript的有效通信。下面将详细阐述相关知识点。 1. **WebView组件**:WebView是Android SDK中的一个核心...

    android原生代码调用js demo

    "android原生代码调用js demo"是一个展示如何在Android原生代码中调用JavaScript功能的小型示例项目。这个项目可能包含了一个或多个Java类,用于在Android环境中通过WebView组件与JavaScript交互。 在Android中,`...

    android + h5 混合开发 webview 版 小实例 + 数据交互 + 界面交互+ js调用java +java 调用js

    1. **Java调用JavaScript:** 使用`evaluateJavascript()`方法,可以执行JavaScript代码并获取其返回值: ```java webView.evaluateJavascript("javascript:yourJsFunction('参数')", new ValueCallback() { @...

    Android和ReactNative混合开发Demo

    本教程通过"Android和React Native混合开发Demo",将详细介绍如何在Android应用中集成React Native,实现原生代码与React Native组件之间的双向通信。 首先,Android原生加载RN页面是混合开发的基础。这涉及到在...

    android 调用js demo

    这个"android 调用js demo"提供了一个实例,展示了如何在Android原生代码中调用JavaScript的功能,以及如何捕获并保存JavaScript页面的信息。让我们深入探讨这个话题。 首先,Android与JavaScript的交互主要依赖于...

    Android-Android和Js交互Demo

    在Android应用开发中,Web视图(WebView)是一种强大的组件,它允许开发者在原生应用中展示网页内容,甚至实现JavaScript与Java代码的交互。这个"Android-Android和Js交互Demo"是关于如何利用WebView来实现这种交互...

    PhoneGap js调用 android demo

    这个“PhoneGap js调用 android demo”是PhoneGap技术的一个实例,展示了如何通过JavaScript来调用Android平台的原生功能。 首先,我们需要理解PhoneGap的核心原理。PhoneGap提供了一个桥接机制,通过JavaScript...

    android webview与js交互简单demo

    下面我们将深入探讨这个“android webview与js交互简单demo”所涉及的知识点。 1. Android WebView基本使用: - 初始化WebView:在布局XML文件中添加WebView控件,并在Activity中通过findViewById()方法获取引用。...

    Android与JS交互Demo

    在Android应用开发中,与JavaScript的交互是一种常见的需求,特别是在构建混合式移动应用时。本教程将探讨如何在Android和JavaScript之间实现双向通信,通过一个名为"AndroidCallHTMLDemo"的示例项目来阐述这一过程...

    Android与html交互的demo

    这个“Android与html交互的demo”很可能是为了演示如何在Android应用中通过WebView组件与内嵌的HTML5页面进行数据交换和功能调用。下面将详细解释这一交互过程的关键技术点。 1. **WebView组件**: Android中的...

    android WebView Demo

    这个"android WebView Demo"是一个示例项目,展示了如何在Android应用中使用WebView来加载HTML页面,并实现Android代码与JavaScript之间的相互调用功能。这个功能在很多场景下都非常实用,例如在原生应用中嵌入网页...

    Android与JS交互 DEMO

    这个"Android与JS交互 DEMO"是一个典型的例子,展示了如何利用WebView组件来实现Android应用与JavaScript之间的通信。在这个DEMO中,我们将深入探讨以下几个关键知识点: 1. **WebView组件**:WebView是Android SDK...

Global site tag (gtag.js) - Google Analytics