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. HTML5前端(移动端网站)性能优化指南

    HTML5是一种最新发布网页构架的普遍模型,是构建对程序.对用户都更有价值的数据驱动的Web的前端技术框架,它的价值在于融合CSS/javaScript/flash等众多前端开发技术,更多的体现在对交 ...

  2. 【Gym 100971K】Palindromization

    Mihahim has a string s. He wants to delete exactly one character from it so that the resulting strin ...

  3. Mysql 中 iddata1的缩小步骤

    原因就不多说了,,,, 直接上干货. 1. 备份数据库 mysqldump -q -uroot -ppassword --add-drop-table --all-databases >all1 ...

  4. FAILED java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI:hdfs:192.*

    运行的参数配置 hdfs:192.168.58.180/cf/userItem.txt 应该写成 hdfs://192.*

  5. 【bzoj2705】 SDOI2012—Longge的问题

    http://www.lydsy.com/JudgeOnline/problem.php?id=2705 (题目链接) 题意 给定一个整数N,你需要求出∑gcd(i, N)(1<=i <= ...

  6. UOJ20 解方程

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...

  7. PHP Opcode内核实现 - [ PHP内核学习 ]

    catalogue . Opcode简介 . PHP中的Opcode . opcode翻译执行(即时解释执行) 1. Opcode简介 opcode是计算机指令中的一部分,用于指定要执行的操作, 指令 ...

  8. ESPCMS /adminsoft/control/citylist.php Int SQLInjection Vul

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Relevant Link:2. 漏洞触发条件 0x1: POC htt ...

  9. AngularJs Cookies 操作

    $cookiesProvider 使用$cookiesProvider改变$cookies服务的默认行为. 默认属性 path:字符串,cookies只在这个路径及其子路径可用.默认情况下,这个将会是 ...

  10. POJ 1064 Cable master (二分)

    题目链接: 传送门 Cable master Time Limit: 1000MS     Memory Limit: 65536K 题目描述 有N条绳子,它们长度分别为Li.如果从它们中切割出K条长 ...