MainActivity如下:

package cn.testjavascript;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebView;
import android.widget.Button;
import android.app.Activity;
/*** Demo描述:* JavaScript与Android中的方法* 的相互调用* * 参考资料:* http://blog.csdn.net/wangtingshuai/article/details/8631835*/
public class MainActivity extends Activity {private WebView mWebView;private Button mButton;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);init();}private void init(){//以下为Javascript调用Java--------------------------mWebView=(WebView) findViewById(R.id.webView);initWebViewSettings();//加载本地Html文件mWebView.loadUrl("file:///android_asset/test.html");//注意://addJavascriptInterface方法中第二参数//它表示我们的java对象javaClass的别名.这样js就可以通过该别名来调用Android中的方法//即js代码中的://window.testjs.firstFunction//window.testjs.secondFunctionJavaClass javaClass=new JavaClass(MainActivity.this);mWebView.addJavascriptInterface(javaClass, "testjs");//以下为Java调用Javascript--------------------------//注意://在调用带参数的Javascript方法时//参数的写法,如此处的//mWebView.loadUrl("javascript:javacalljswithargs("+"'stringArg'"+")");//不加单引号是错误的mButton=(Button) findViewById(R.id.button);mButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {//调用Javascript中的无参方法             mWebView.loadUrl("javascript:javacalljs()");//调用Javascript中带参数的方法     mWebView.loadUrl("javascript:javacalljswithargs("+"'stringArg'"+")");}});}private void initWebViewSettings(){mWebView.setVerticalScrollBarEnabled(false);mWebView.setHorizontalScrollBarEnabled(false);mWebView.getSettings().setJavaScriptEnabled(true);mWebView.getSettings().setSupportZoom(true);mWebView.getSettings().setDomStorageEnabled(true);mWebView.getSettings().setPluginsEnabled(true);mWebView.requestFocus();mWebView.getSettings().setUseWideViewPort(true);mWebView.getSettings().setLoadWithOverviewMode(true);mWebView.getSettings().setSupportZoom(true);mWebView.getSettings().setBuiltInZoomControls(true);}}

JavaClass如下:

package cn.testjavascript;import android.content.Context;
import android.widget.Toast;public class JavaClass {private Context mContext;public JavaClass(Context context) {this.mContext=context;}public void firstFunction() {Toast.makeText(mContext, "Javascipt调用Java中的方法,未携带参数", Toast.LENGTH_SHORT).show();}public void secondFunction(String string) {Toast.makeText(mContext, "Javascipt调用Java中的方法,携带参数为:"+string, Toast.LENGTH_SHORT).show();}
}

main.xml如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"><WebViewandroid:id="@+id/webView"android:layout_width="fill_parent"android:layout_height="370dip"android:layout_centerHorizontal="true"/><Button android:id="@+id/button"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="点击后Java调用Javascript"android:layout_alignParentBottom="true"/></RelativeLayout>

test.html如下:

<html>
<head>
<meta http-equiv="Content-Type"   content="text/html;charset=gb2312">
<script type="text/javascript">
function javacalljs(){document.getElementById("content").innerHTML +=   "<br\>java调用了javascript函数,未带参数";
}function javacalljswithargs(arg){document.getElementById("content").innerHTML +=   ("<br\>java调用了javascript函数,参数为:"+arg);
}</script>
</head>
<body>
测试Android与Javascript的交互<br/>
<br>
<a onClick="window.testjs.firstFunction()">点击后Javascript调用java代码</a><br/>
<br>
<a onClick="window.testjs.secondFunction('arg')" >点击后Javascript调用java代码并携带参数</a>
<br/>
<br>
<div id="content">以下为java调用Javascript时的提示信息:</div>
</body>
</html>

转载于:https://www.cnblogs.com/snake-hand/archive/2013/06/05/3119950.html

Android与Javascript交互示例(二)相关推荐

  1. Android与Javascript交互之入门

    Android与JavaScript交互主要是使用的WebView. 关于WebView,一般涉及到2个类:WebChromeClient 和 WebViewClient . 开发的大致流程为(摘自A ...

  2. Android WebView JavaScript交互

    今天介绍一下,Android中Webview与JavaScript的交互,首先是在布局文件里添加webview控件: [html] view plaincopy <WebView android ...

  3. 高德地图组件在Android的应用以及Android与JavaScript的交互(一)

    最近在慕课网学习了关于高德地图组件的课程(其实就是一个广告,内容和官网的API完全一样),发现这个JavaScript API比Android API简单方便多了,于是就打算放在Android APP ...

  4. android java 调用js,Android中Java和JavaScript交互实例

    Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScript又是一个很举足轻重的脚本.本文将介绍如何实现Java代码和Javascript代码的相互调用. 如 ...

  5. Android入门——WebView使用及Java和JavaScript交互小结

    文章大纲 引言 一.WebView 概述 二.WebView的常用的方法 1.构造方法 2.其他常用方法 3.WebSettings常用的方法 三.WebView的应用 1.使用WebView的基本步 ...

  6. 安卓开发笔记(二十二):读取本地(内置)html文件并实现和Javascript交互

    实际上我们通常是使用WebView控件对本地html进行读取,这样就可以体会类似web app和安卓原生混合开发的乐趣了.在读取本地html并展示在前台的时候,并不需要在Androidmenifast ...

  7. Android开发笔记(一百五十一)WebView与JavaScript交互的四种形式

    WebView如果作为简单的网页浏览器,对于一般的浏览行为来说,已经足够了.可做为企业开发者,你的App通常要嵌入自家公司的网页,如此一来,还得考虑App与Web之间的消息传递,这就涉及到App的原生 ...

  8. android js交互 数组,Android WebView —— Java 与 JavaScript 交互总结

    相比于 Native App 和 Web App,Hybrid App 凭借其迭代灵活.控制自如.多端同步的优势在应用市场上越发显得优胜,主要得力于,其将变更频繁的部分产品功能使用 H5 开发并在客户 ...

  9. [原]flash研究(三)——Falsh与JavaScript交互

    一.getURL方法在flash中可以用getURL方法来调用JS中的函数. 例: GetURL_btn.onRelease=function(){     getURL("javascri ...

最新文章

  1. SILK 的 Delay Decision 和 Dither
  2. zoj 1152 A Mathematical Curiosity
  3. Linux下常用软件
  4. java获取系统语言(区分简体中文和繁体中文)
  5. MongoRepository自定义条件及分页查询代码
  6. Unity 实现物体破碎效果(转)
  7. Python面试题【315+道题】
  8. Kinect开发学习笔记之(三)Kinect开发环境配置
  9. 关于多线程中锁的理解
  10. 安装tensorflow时候报错ImportError: DLL load failed: 找不到指定的模块。Failed to load the native TensorFlow runtime.
  11. 菜鸟学习oracle
  12. (机器人学导论--运动学)(三)DH表达法顺向运动学
  13. Contexts使用以及详细配置
  14. Postman(1):postman测试post请求参数为json类型
  15. 无法理解高等数学怎么办?
  16. 醉逍遥显示无法更新服务器,蜀门醉逍遥版本修改教程 (值好几千,俺心血).doc
  17. Sage x3周期性凭证帮助企业提升财务效率
  18. 卷积神经网络在物联网场景中的应用初探
  19. Android使用高德地图api实现基础定位
  20. Libre密聊——致力于私密聊天的用心APP

热门文章

  1. imp导入时出现imp-00017 ora-06550的解决办法
  2. index.html example demonstration
  3. try not let others think you are good enough
  4. 基于长度特征的三文鱼好sea bass的区分,sesbass 比三文鱼长
  5. C++右值引用的参考
  6. C++风格与C风格文件读写效率测试-vs2015,vs2017
  7. UNITY引擎变量调用产生不必要内存分配
  8. 私有云存储搭建(owncloud)
  9. 私有云相对更流行的公有云和混合云有什么优势?
  10. Oracle11g 备份和恢复的方法