Android代码:

package com.fyfeng.testjavascript;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.webkit.WebView;
import android.widget.Toast; public class MainActivity extends ActionBarActivity { private static final String tag = MainActivity.class.getSimpleName(); WebView webView; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); webView = (WebView) this.findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);//设置可以JavaScript
webView.loadUrl("http://192.168.1.104:8080/examples/");//加载网页 webView.addJavascriptInterface(new PayYa(), "pay");//定义一个支付结果,模拟。PayYa为支付接口处理类。 } public void onClickPay() {
Intent intent = new Intent(this, SecondActivity.class);//模拟打开另外一个支付界面。
startActivityForResult(intent, 1000);
} public void onPayCallback(String result) {
Log.d(tag, "result = " + result);
webView.loadUrl("javascript:payCallback('" + result + "');");//通知网页支付结果。
} @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {//支付结果返回 Log.d(tag, "requestCode = " + requestCode + ", resultCode = " + resultCode);
switch (requestCode) {
case 1000: { if (Activity.RESULT_OK == resultCode) {
onPayCallback("hello, 这是支付结果. !");
} break;
}
}
} public final class PayYa { @android.webkit.JavascriptInterface
public void pay(String hello) {//支付请求处理函数
Log.d(tag, "pay = " + hello); onClickPay();
} public void show(String args) {//这个函数是为了辅助显示网页中的alert对话框。
Toast.makeText(getApplicationContext(), args, Toast.LENGTH_SHORT).show();
}
} }

网页部分代码:

<!DOCTYPE HTML><html lang="en"><head>
<meta charset="UTF-8">
<title>Apache Tomcat Examples</title>
<script type="text/javascript">
function doPay(args){ javascript:pay.pay(args+(new Date()));//调用Android本地支付接口函数,参数为args+new Date(); pay为在Android原生应用代码中定义的一个支付对象,这个支付对象有个pay(...)方法。 //javascript:pay.show("hello"); } function payCallback(args){//Android本地支付处理完毕回调该函数,并把支付结果传递到该函数。
//alert("pay callback = "+args); //打印支付结果。
javascript:pay.show(args); ////在Android的WebView中无法显示Alert对话框,只能借助Android原生Toast或者Dialog来显示。
}
</script>
</head>
<body>
<button onclick="doPay('hello')">doPay</button><!-- 点击支付事件。 -->
</body>
</html>

Android中Java与JavaScript之间交互(转)的更多相关文章

  1. WebView中Java与JavaScript的交互

    原文首发于微信公众号:jzman-blog,欢迎关注交流! Android 开发过程中 WebView 的使用比较广泛,常用来加载网页,比如使用 WebView 加载新闻页面.使用 WebView 打 ...

  2. Android 中Java和JavaScript交互入门

    如何实现JavaScript 和java 交互 实现Java和js交互十分便捷.通常只需要以下几步. WebView开启JavaScript脚本执行 WebView设置供JavaScript调用的交互 ...

  3. Android中Java和JavaScript交互

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

  4. Android中webview和js之间的交互(转)

    http://www.cnblogs.com/leizhenzi/archive/2011/06/29/2093636.html 1.android中利用webview调用网页上的js代码. Andr ...

  5. 安卓中java和js如何交互

    1.安卓中java和js如何交互 在Android上怎样实现JAVA和JS交互呢?Android的webview是基于webkit内核的,webview中集成了js与java互调的接口函数,通过add ...

  6. Android中webView和网页的交互

     Android中webView和网页的交互 Android中webView跟网页的交互式通过JavaScript进行的.具体步骤: 1.创建JavaScript,在点击的时候调用JavaScript ...

  7. Java和JavaScript之间的区别

    1.简介 通过优锐课核心java学习笔记中,我们可以看到,Java和JavaScript之间的区别.我们将在本文中比较Java语言和JavaScript语言.JavaScript由Netscape开发 ...

  8. Android中Java与web通信

    Android中Java与web通信不是新的技术了,在android公布之初就支持这样的方式,2011年開始流行,而这样的模式开发也称作Hybird模式. 这里对android中的Java与web通信 ...

  9. Android中Java反射技术的使用示例

    import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Metho ...

随机推荐

  1. Yii2 Redis的使用

    Yii2 redis扩展    下载 将下载的解压,改名为redis,放在vendor\yiisoft\yii2\目录下 包含Connection.php,ActiveRecord.php等文件 修改 ...

  2. JavaScript RegExp 对象(来自w3school)

    RegExp 对象用于规定在文本中检索的内容. 什么是 RegExp? RegExp 是正则表达式的缩写. 当您检索某个文本时,可以使用一种模式来描述要检索的内容.RegExp 就是这种模式. 简单的 ...

  3. Linux基础2

    命令格式命令的类型:1.内部命令 linux系统使用的shell提供.2.外部命令 安装第三方软件才会. type 命令名 查命令的类型 | 把前边命令的输出作为后边命令的输入 管道 grep 对数据 ...

  4. 关于 UINavigationController 的一些知识

    1.在 UINavigationController 中,添加一个UITextView,虽然设置self.frame = textView.bounds(从0.0开始),但是系统会自动设置一个cont ...

  5. MapReduce实现协同过滤中每个用户看过的项目集合

    一.知识准备 hadoop自带的例子在 D:\HADOOP_HOME\hadoop-2.6.4\share\hadoop\mapreduce\sources\hadoop-mapreduce-exam ...

  6. 【codeforces 733F】 Drivers Dissatisfaction

    http://codeforces.com/problemset/problem/733/F (题目链接) 题意 给出一张n个点的无向图,每一条变有两个特征值:${w,c}$:分别表示这条边的权值为$ ...

  7. Jenkins 2.x版本的安装步骤(Windows)

    一.登录官网https://jenkins.io/index.html 二.选择LTS版本(长期支持的版本) 如果想要下载其它版本可以进入列表选择,在最顶部有操作系统可以选择 三.安装好后,第一次会进 ...

  8. PowerDesigner设计表时显示注释选项

    选定编辑的表,[右键]->[Properties]->[Columns]->[Customize Columns and Filter]->[Comment]->[OK] ...

  9. poj3335 半平面交

    题意:给出一多边形.判断多边形是否存在一点,使得多边形边界上的所有点都能看见该点. sol:在纸上随手画画就可以找出规律:按逆时针顺序连接所有点.然后找出这些line的半平面交. 题中给出的点已经按顺 ...

  10. poj3744 Scout YYF I

    题意:n个地雷(n<=10)在长度10^8的坐标轴上,yyf从横坐标为1的点开始,每一步有p的概率向右跳一格,(1-p)的概率向右跳两格(不会踩到中间一格),如果踩到地雷他就会死.问活下来的概率 ...