- 浏览: 205043 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
xyyx_nk:
在demo中没有下载的示例,能详细说一下怎么监听下载过程吗?比 ...
DhNet 网络http工具(带缓存功能哦) -dhroid文档 -
zhaoguowei998:
dhroid ioc模块对 加密混淆问题 -
zhaoguowei998:
你太牛了,佩服佩服,以后要多想你请教了
dhroid ioc模块对 加密混淆问题 -
白色蜻蜓:
转载下您的文章,已注明出处。
IOS开发之百度地图API应用 -
wenjiefeng:
你好,在andrioidpn-client客户端源码里,Not ...
Android 推送之原理与初触Androidpn(Android Push Notification)
http://618119.com/archives/2010/12/20/199.html
1.首先继承android.webkit.WebChromeClient实现MyWebChromeClient。
2.在MyWebChromeClient.java中覆盖onJsAlert,onJsConfirm,onJsPrompt三个方法。
3.在初始化Webview时设置调用webview.setWebChromeClient(new MyWebChromeClient());
4.在Webview载入的html中使用window.alert,window.confirm,window.prompt方法,系统弹出的将是自定义实现的对应对话框。
MyWebChromeClient.java的代码如下:
- import android.app.AlertDialog;
- import android.content.DialogInterface;
- import android.content.DialogInterface.OnCancelListener;
- import android.content.DialogInterface.OnClickListener;
- import android.content.DialogInterface.OnKeyListener;
- import android.graphics.Bitmap;
- import android.os.Message;
- import android.util.Log;
- import android.view.KeyEvent;
- import android.webkit.JsPromptResult;
- import android.webkit.JsResult;
- import android.webkit.WebChromeClient;
- import android.webkit.WebView;
- import android.widget.EditText;
- /**
- * http://618119.com/archives/2010/12/20/199.html
- */
- //****************************************************************************
- public class MyWebChromeClient extends WebChromeClient {
- @Override
- public void onCloseWindow(WebView window) {
- super.onCloseWindow(window);
- }
- @Override
- public boolean onCreateWindow(WebView view, boolean dialog,
- boolean userGesture, Message resultMsg) {
- return super.onCreateWindow(view, dialog, userGesture, resultMsg);
- }
- /**
- * 覆盖默认的window.alert展示界面,避免title里显示为“:来自file:////”
- */
- public boolean onJsAlert(WebView view, String url, String message,
- JsResult result) {
- final AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext());
- builder.setTitle("对话框")
- .setMessage(message)
- .setPositiveButton("确定", null);
- // 不需要绑定按键事件
- // 屏蔽keycode等于84之类的按键
- builder.setOnKeyListener(new OnKeyListener() {
- public boolean onKey(DialogInterface dialog, int keyCode,KeyEvent event) {
- Log.v("onJsAlert", "keyCode==" + keyCode + "event="+ event);
- return true;
- }
- });
- // 禁止响应按back键的事件
- builder.setCancelable(false);
- AlertDialog dialog = builder.create();
- dialog.show();
- result.confirm();// 因为没有绑定事件,需要强行confirm,否则页面会变黑显示不了内容。
- return true;
- // return super.onJsAlert(view, url, message, result);
- }
- public boolean onJsBeforeUnload(WebView view, String url,
- String message, JsResult result) {
- return super.onJsBeforeUnload(view, url, message, result);
- }
- /**
- * 覆盖默认的window.confirm展示界面,避免title里显示为“:来自file:////”
- */
- public boolean onJsConfirm(WebView view, String url, String message,
- final JsResult result) {
- final AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext());
- builder.setTitle("对话框")
- .setMessage(message)
- .setPositiveButton("确定",new OnClickListener() {
- public void onClick(DialogInterface dialog,int which) {
- result.confirm();
- }
- })
- .setNeutralButton("取消", new OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- result.cancel();
- }
- });
- builder.setOnCancelListener(new OnCancelListener() {
- @Override
- public void onCancel(DialogInterface dialog) {
- result.cancel();
- }
- });
- // 屏蔽keycode等于84之类的按键,避免按键后导致对话框消息而页面无法再弹出对话框的问题
- builder.setOnKeyListener(new OnKeyListener() {
- @Override
- public boolean onKey(DialogInterface dialog, int keyCode,KeyEvent event) {
- Log.v("onJsConfirm", "keyCode==" + keyCode + "event="+ event);
- return true;
- }
- });
- // 禁止响应按back键的事件
- // builder.setCancelable(false);
- AlertDialog dialog = builder.create();
- dialog.show();
- return true;
- // return super.onJsConfirm(view, url, message, result);
- }
- /**
- * 覆盖默认的window.prompt展示界面,避免title里显示为“:来自file:////”
- * window.prompt('请输入您的域名地址', '618119.com');
- */
- public boolean onJsPrompt(WebView view, String url, String message,
- String defaultValue, final JsPromptResult result) {
- final AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext());
- builder.setTitle("对话框").setMessage(message);
- final EditText et = new EditText(view.getContext());
- et.setSingleLine();
- et.setText(defaultValue);
- builder.setView(et)
- .setPositiveButton("确定", new OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- result.confirm(et.getText().toString());
- }
- })
- .setNeutralButton("取消", new OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- result.cancel();
- }
- });
- // 屏蔽keycode等于84之类的按键,避免按键后导致对话框消息而页面无法再弹出对话框的问题
- builder.setOnKeyListener(new OnKeyListener() {
- public boolean onKey(DialogInterface dialog, int keyCode,KeyEvent event) {
- Log.v("onJsPrompt", "keyCode==" + keyCode + "event="+ event);
- return true;
- }
- });
- // 禁止响应按back键的事件
- // builder.setCancelable(false);
- AlertDialog dialog = builder.create();
- dialog.show();
- return true;
- // return super.onJsPrompt(view, url, message, defaultValue,
- // result);
- }
- @Override
- public void onProgressChanged(WebView view, int newProgress) {
- super.onProgressChanged(view, newProgress);
- }
- @Override
- public void onReceivedIcon(WebView view, Bitmap icon) {
- super.onReceivedIcon(view, icon);
- }
- @Override
- public void onReceivedTitle(WebView view, String title) {
- super.onReceivedTitle(view, title);
- }
- @Override
- public void onRequestFocus(WebView view) {
- super.onRequestFocus(view);
- }
- }
发表评论
-
Dhdb 简化sqlite数据库操作--dhroid文档
2014-04-15 12:30 1354android数据库其实使用的不多,dhroid框架中的 ... -
dhroid ioc模块对 加密混淆问题
2014-04-14 12:52 970大家应该已经看过ioc ... -
NetJSONAdapter 网络化的adapter(高效) -dhroid文档
2014-04-04 12:15 897关于adapter 我想对于大家来说已经不陌生了,基本应用 ... -
DhNet 网络http工具(带缓存功能哦) -dhroid文档
2014-03-24 13:36 1488网络请求是大多数应用不可获取的一部分,曾经和一个其他公司的 ... -
eventbus 事件总线-dhroid文档
2014-03-23 11:47 1265你听过onClick 事件,onItemClick 事件, ... -
ioc基础(视图,资源,assert注入)-dhroid文档
2014-03-21 12:59 864上一节 Android 极速开发框架 dhroid来了 ... -
ioc高级(接口,对象注入)-dhroid文档
2014-03-21 13:04 1138前一章 ioc基础( ... -
IOC容器详解(想晋升的进来)---dhroid框架教教程(一)
2014-03-20 10:30 980控制反转(Inversion of Control,英文缩写 ... -
Android 极速开发框架 dhroid来了(提供demo)
2014-03-19 17:24 1379我们公司内部使用的商业级android开发框架dhr ... -
HttpClient的3种超时说明
2013-03-14 11:05 887/* 从连接池中取连接的超时时间 */ConnManag ... -
MeasureSpec介绍及使用详解
2013-01-24 21:21 754一个MeasureSpec封装了父 ... -
Android学习——TextView 设置中划线 下划线
2012-10-31 14:42 3462android:textAppearance ... -
ListView与其中的Button,EditText,RatingBar等widget的click事件
2012-10-26 14:48 867在<RelativeLayout>中 an ... -
在线词典API
2012-09-09 19:34 738QQ词典 http://dict.qq.com/dic ... -
关于android WebViewClient的方法解释
2012-09-09 17:12 7691、public boolean shouldOverride ... -
android Uri获取真实路径转换成File的方法
2012-08-23 12:40 3065data.getData()返回的 ... -
Java之WeakReference与SoftReference使用讲解
2012-08-22 09:46 692如果你想写一个 Java 程序,观察某对象什么时候会被垃圾收集 ... -
Android自定义捕获Application全局异常
2012-08-21 17:24 1201package qianlong.qlmobile ... -
android 缩放图片与内存溢出
2012-08-03 09:43 1218常用的Android版缩放图片代码: ContentRes ... -
获取手机设备方向
2012-08-03 09:33 1464@Override public void onS ...
相关推荐
为了能够处理来自JavaScript的alert、confirm和prompt对话框,我们需要创建一个自定义的WebChromeClient: ```java class MyWebChromeClient extends WebChromeClient { // 覆盖方法 @Override public boolean...
- 使用`WebChromeClient`的`onJsAlert()`、`onJsConfirm()`和`onJsPrompt()`方法处理JavaScript的alert、confirm和prompt对话框。 - `WebView`还提供了`onJsBeforeLoad()`、`onJsTimeout()`等回调,可以监听...
为了正确处理JavaScript的`alert()`、`confirm()`和`prompt()`对话框,以及获取加载进度等信息,你需要为你的WebView设置一个`WebChromeClient`实例。例如: ```java myWebView.setWebChromeClient(new ...
本篇将详细讲解在Android中使用WebView进行JS交互的几种常见方法,以及如何在实际项目中应用这些技术。 1. **注入JavaScript接口(JavaScript Interface)** Android提供了`addJavascriptInterface()`方法,允许...
`WebChromeClient`通常用于处理JavaScript的对话框(如alert、confirm、prompt)、进度信息以及文件选择器。而`WebViewClient`则用于拦截页面的加载事件,比如在页面加载开始、完成或出错时进行相应的处理。通过重写...
3. **`WebViewChromeClient`**:在更复杂的情况下,可以使用`WebChromeClient`来处理JavaScript的异步调用,如`window.confirm()`、`window.prompt()`和`window.alert()`。通过重写`onJsPrompt()`、`onJsAlert()`和`...
你可以重写`onJsAlert`、`onJsConfirm`和`onJsPrompt`来处理JavaScript的alert、confirm和prompt对话框。 2. `WebViewClient`:主要负责页面加载过程中的事件,如页面开始加载、页面加载完成、错误处理等。重写`...
- `WebChromeClient`:处理更复杂的交互,如弹出对话框、处理JavaScript的alert、confirm、prompt等。 3. **Android与WebView的交互**: - **Android调用JavaScript**:使用`WebView.loadUrl("javascript:your...
- WebChromeClient则处理更复杂的交互,比如提供对话框、加载进度、JavaScript的alert、confirm、prompt等。 3. **处理视频播放**: - 默认情况下,WebView可能不会自动全屏播放视频。我们需要重写...
2. **WebChromeClient**: 提供了与JavaScript交互的一些高级功能,如`onJsAlert()`、`onJsConfirm()`、`onJsPrompt()`用于处理JavaScript的alert、confirm和prompt对话框,以及`onProgressChanged()`跟踪网页加载...
`android捕获js中的dialog事件`这个主题涉及到如何在Android的WebView组件中监听并处理JavaScript弹出的对话框,如alert、confirm和prompt。这篇博文链接指向的是ITEYE上的一篇博客,虽然具体内容无法在此提供,但...
总结,Java和JavaScript在Android中的互调涉及多个层面,包括`WebView`的使用、接口定义、客户端配置以及安全性控制。理解和熟练掌握这些知识点对于开发混合式应用至关重要。通过合理的使用,可以充分利用两者的优势...
在Android应用开发中,WebView是一个重要的组件,它允许开发者在应用程序内部展示网页内容。而当涉及到与网页交互时,我们通常会用到WebViewClient和WebChromeClient这两个关键类。它们各自有不同的职责,协同工作以...
可以用来处理JavaScript的`prompt()`对话框,以及`WebChromeClient`的`onJsAlert()`和`onJsConfirm()`方法处理JavaScript的`alert()`和`confirm()`对话框。 最后,我们还可以通过`WebViewClient`的`...
例如,`WebChromeClient.onJsAlert()`、`onJsConfirm()`和`onJsPrompt()`可以捕获并处理JavaScript的alert、confirm和prompt对话框。 2. **postMessage和MessageChannel**:为了使JS能够调用Android,我们需要监听...
2. **WebChromeClient**:更专注于提供高级的交互功能,如显示加载进度条、处理JavaScript的alert()、confirm()、prompt()对话框等。此外,WebChromeClient还提供了evaluateJavascript()方法,可以直接执行...
可以通过实现onProgressChanged方法来显示加载进度条,或者通过onJsAlert、onJsConfirm和onJsPrompt来处理JavaScript的alert、confirm和prompt对话框。 4. **网络请求处理**: 虽然WebView可以处理大部分的网页加载...
我们可以通过重写`onJsAlert`、`onJsConfirm`和`onJsPrompt`方法来响应JavaScript的alert、confirm和prompt对话框。 2. `WebViewClient`: 主要负责处理页面加载的相关事件,如加载开始、加载结束等。我们可以通过...
继承WebChromeClient类,在这个类的3个方法中,分别使用Android的内置控件重写了Js中对应的对话框,就是说对js中的对话框做处理了,就是重写了。 通过Android调用JS处理alert弹出框 、处理confirm弹出框、处理...