最近项目中涉及到Android中的网络通信与交互、html5等相关内容,由于之前没仔细研究过,在这里总结一下,下面是JavaScript与Java相互调用的一个小例子,废话不多说,直接上代码:

<html>
<meta http-equiv="Content-Type" content="text/html;charset=GBK"><head>
<script type="text/javascript">function ok() {window.player.playOk();}function wrong() {window.player.playWrong();}function show_alert() {alert("这是一个警告!")}function show_confirm() {var v = confirm("确定你是个好人?")if (v == true) {alert("你选择了是!");} else {alert("你选择了否!");}}function disp_prompt() {var name = prompt("请输入您的名字", "Jerome")if (name != null && name != "") {document.getElementById("content").innerHTML = "你好!" + name;}}function java_call() {document.getElementById("content").innerHTML = "Java代码调用你了";}
</script>
</head>
<body><input type="button" οnclick="ok()" value="OK" /><br /><input type="button" οnclick="wrong()" value="Warning"><br /><input type="button" οnclick="show_alert()" value="警告"><br /><input type="button" οnclick="show_confirm()" value="删除"><br /><input type="button" οnclick="disp_prompt()" value="显示提示框" /><br /><p id="content"></p>
</body>
</html>

这是html的代码,不接触web前段,js都不怎么会写了,简单的函数凑合用了,嘿嘿。

package com.example.jsjava;import java.io.IOException;import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.res.AssetFileDescriptor;
import android.content.res.AssetManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.webkit.JsPromptResult;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.widget.EditText;/*** * ClassName:MainActivity* * @author Jerome Song* @version* @since Ver 1.1* @Date 2013 2013-5-17 下午11:33:05* * @see*/
public class MainActivity extends Activity {private WebView webview = null;private MediaPlayer player;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);player = new MediaPlayer();initWebView();}private void initWebView() {webview = (WebView) super.findViewById(R.id.webview);webview.getSettings().setJavaScriptEnabled(true); // 启用JavaScriptwebview.getSettings().setBuiltInZoomControls(true); // 控制页面缩放webview.addJavascriptInterface(new PlayerMethod(), "player");// 添加Js函数调用接口webview.setWebChromeClient(new WebChromeClient() {@Override// 弹出警告框操作public boolean onJsAlert(WebView view, String url, String message,final JsResult result) {Dialog dialog = new AlertDialog.Builder(MainActivity.this).setMessage(message).setPositiveButton(android.R.string.ok,new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {result.cancel();// 这里我们通过Webview.loadUrl()方法去调用js中的函数webview.loadUrl("javascript:java_call()");}}).create();dialog.setCancelable(false);// 避免点Back取消,那样js接收不到任何返回信息dialog.show();return true;}//@Override// 弹出确认框操作public boolean onJsConfirm(WebView view, String url,String message, final JsResult result) {Dialog dialog = new AlertDialog.Builder(MainActivity.this).setIcon(android.R.drawable.stat_sys_warning).setMessage(message).setPositiveButton("是",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {result.confirm();}}).setNegativeButton("否",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {result.cancel();}}).create();dialog.setCancelable(false);dialog.show();return true;}// 提示@Overridepublic boolean onJsPrompt(WebView view, String url, String message,String defaultValue, final JsPromptResult result) {final EditText text = new EditText(MainActivity.this);text.setHint(defaultValue);Dialog dialog = new AlertDialog.Builder(MainActivity.this).setTitle(message).setView(text).setPositiveButton("确定", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {result.confirm(text.getText().toString());}}).setNegativeButton("取消", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {result.cancel();}}).create();dialog.setCancelable(false);dialog.show();return true;}});webview.loadUrl("file:///android_asset/html/play_js.html");}class PlayerMethod {Handler handler = new Handler() {public void handleMessage(android.os.Message msg) {try {if (msg.what == 1) {play("ok.mp3");} else {play("wrong.mp3");}} catch (IOException e) {e.printStackTrace();}};};AssetManager asm = getResources().getAssets();public void playOk() throws IllegalArgumentException,IllegalStateException, IOException {handler.sendEmptyMessage(1);}public void playWrong() throws IOException {handler.sendEmptyMessage(0);}private void play(String fileName) throws IOException {if (player.isPlaying()) {player.stop();}player.reset();AssetFileDescriptor afd = asm.openFd(fileName);player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(),afd.getLength());player.prepare();player.start();}}}

有不对的地方希望大家能给予批评指正,多多交流,谢谢。

源码地址:http://download.csdn.net/detail/songzhiyong1121/5400403

Android加载网页JavaScript与Java之间的相互调用相关推荐

  1. android加载网页pdf,android 一行代码搞定加载网络 pdf 文件

    之前写过一篇Android打开本地pdf文件的文章,最后总结的时候说,后面一定要拓展库,让其也能打开网络的的pdf文件.今天终于可以兑现承诺了.frok一份代码github.com/JoanZapat ...

  2. android加载webview网页,android 加载网页Html文本--WebView

    [实例简介]解决了乱码问题 [实例截图] [核心代码] package com.cd.webview_html; import android.app.Activity; import android ...

  3. Python与Java之间的相互调用——Jython

    概述: Jython 是一种可以把两种不同的编程语言结合在一起的工具.首先,它使Python 程序员介入到Java 开发环境并让他们能快速开发方案原型,以便无缝地集成到现有的Java 平台上.其次,它 ...

  4. Android Native APP开发笔记:使用WebView控件加载网页

    文章目录 目的 基础使用 处理网页导航 加载本地网页 Web和Native之间交互 调试Web应用 处理页面重绘 总结 目的 WebView是一个比较常用的控件,功能上也比较单一,就是用来加载网页的, ...

  5. android动态设置错误页面,Android中替换WebView加载网页失败时的页面

    我们用webView去请求一个网页链接的时候,如果请求网页失败或无网络的情况下,它会返回给我们这样一个页面,如下图所示: 上面这个页面就是系统自带的页面,你觉得是不是很丑?反正小编本人觉得非常丑,很难 ...

  6. android webview加载网页,文字listview和image混合listview的实现

    android和ios内置浏览器支持html5,还支持CSS3和js 下面的一个小例子,我来实现android加载html页面.还有两个列表,回顾一下listview的功能.文章内容较浅,没有特别高的 ...

  7. Android中使用x5内核加载网页的实现

    前言 联系方式 背景 SDK下载 SDK集成 使用 代码实现 前言 由于是使用的腾讯浏览服务,所以这里大部分介绍的是官网的一些东西,不过自己会做一些复杂使用部分的实现,不至于像官网上介绍的笼统. 联系 ...

  8. Android使用WebView加载网页

    在AndroidManifest.xml设置访问网络权限: <span style="font-size:24px;"><span style="fon ...

  9. android WebView加载网页白屏问题优化处理

    android WebView加载网页白屏问题优化处理 问题描述: 使用webview加载Web界面时,会出现界面白屏的情况.http下通常问题不大,通常https白屏的可能性很大,而且通常没有任何报 ...

最新文章

  1. python估计物体角度
  2. 最全的ASP.NET开源CMS汇总
  3. networkx 标签_networkx绘制BA无标度网络
  4. javascript事件之:jQuery事件中实例对象和拓展对象之间的通信
  5. 在Linux下生成crypt加密密码
  6. 数独动态解题演示小网站 - 基于Vue/pixi.js/Flask
  7. java模块化实践(基于jdk11)-1
  8. 人体姿态识别-左肩和左肘的定位识别
  9. 服务器的mdf文件怎么打开,mdf文件,教您mdf文件怎么打开
  10. Oracle客户端完整版下载地址
  11. 微信小程序的事件绑定、接收参数、示例
  12. 树莓派4B无显示屏系统安装(Raspbian)
  13. 在kindle上阅读网络小说的正确方法——Kindle网文助手
  14. POJ 1389 Area of Simple Polygons(扫描线求面积)
  15. think php 导出excel,Thinkphp5导出excel
  16. 信号频率和带宽的关系
  17. python数据分析比较好的书籍_python数据分析比较好的书籍推荐|陇川制作项目盈利能力分析...
  18. 使用GitBook编写文档书籍
  19. 云创大数据加入南京工业互联网产业联盟
  20. 计算机与软件学院在北辰校区的东区还西区,如何坐公交 或 地铁去天津的河北工业大学北辰校区教师公寓-45号楼| Moovit...

热门文章

  1. 记一次装机——笔记本UEFI双硬盘(SSD+机械)双系统(Win10+Linux Mint)
  2. 6 图助你理解 SQL 优化策略
  3. 使用Python读取二进制文件
  4. 1亿数字中找出重复次数TopN的问题
  5. 基于Qt平台利用UDP协议传输大文件(百度网盘免费代码)
  6. 我的10年软件情缘--2001到2011
  7. Delphi多平台开发版本选型
  8. ubuntu18.04 muduo编译安装
  9. 1024节谈谈 “前端性能优化” 背刺面试官
  10. strncpy 安全吗?