- 浏览: 5826006 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (890)
- WindowsPhone (0)
- android (88)
- android快速迭代 (17)
- android基础 (34)
- android进阶 (172)
- android高级 (0)
- android拾遗 (85)
- android动画&效果 (68)
- Material Design (13)
- LUA (5)
- j2me (32)
- jQuery (39)
- spring (26)
- hibernate (20)
- struts (26)
- tomcat (9)
- javascript+css+html (62)
- jsp+servlet+javabean (14)
- java (37)
- velocity+FCKeditor (13)
- linux+批处理 (9)
- mysql (19)
- MyEclipse (9)
- ajax (7)
- wap (8)
- j2ee+apache (24)
- 其他 (13)
- phonegap (35)
最新评论
-
Memories_NC:
本地lua脚本终于执行成功了,虽然不是通过redis
java中调用lua脚本语言1 -
ZHOU452840622:
大神://处理返回的接收状态 这个好像没有监听到 遇 ...
android 发送短信的两种方式 -
PXY:
拦截部分地址,怎么写的for(int i=0;i<lis ...
判断是否登录的拦截器SessionFilter -
maotou1988:
Android控件之带清空按钮(功能)的AutoComplet ...
自定义AutoCompleteTextView -
yangmaolinpl:
希望有表例子更好。。。,不过也看明白了。
浅谈onInterceptTouchEvent、onTouchEvent与onTouch
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的代码如下:
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); } }
发表评论
-
NestedScrollView滚动到顶部固定子View悬停挂靠粘在顶端
2018-10-31 20:45 7012网上有一个StickyScrollView,称之为粘性Scro ... -
自定义Behavior实现AppBarLayout越界弹性效果
2017-03-31 09:33 10385一、继承AppBarLayout.Beha ... -
Android - 一种相似图片搜索算法的实现
2017-03-31 09:33 2632算法 缩小尺寸。 将图片缩小到8x8的尺寸,总共64个 ... -
使用SpringAnimation实现带下拉弹簧动画的 ScrollView
2017-03-30 11:30 2859在刚推出的 Support Library 25.3.0 里面 ... -
Android为应用添加角标(Badge)
2017-03-30 11:21 61951.需求简介 角标是什么意思呢? 看下图即可明了: 可 ... -
Android端与笔记本利用局域网进行FTP通信
2017-03-23 10:17 990先看图 打开前: 打开后: Activity类 ... -
PorterDuffColorFilter 在项目中的基本使用
2017-03-03 10:58 1361有时候标题栏会浮在内容之上,而内容会有颜色的变化,这时候就要求 ... -
ColorAnimationView 实现了滑动Viewpager 时背景色动态变化的过渡效果
2017-02-24 09:41 2231用法在注释中: import android.anima ... -
迷你轻量级全方向完美滑动处理侧滑控件SlideLayout
2017-01-16 16:53 2602纯手工超级迷你轻量级全方向完美滑动处理侧滑控件(比官方 sup ... -
Effect
2017-01-05 09:57 0https://github.com/JetradarMobi ... -
动态主题库Colorful,容易地改变App的配色方案
2016-12-27 14:49 2572Colorful是一个动态主题库,允许您很容易地改变App的配 ... -
对视图的对角线切割DiagonalView
2016-12-27 14:23 1126提供对视图的对角线切割,具有很好的用户定制 基本用法 ... -
仿淘宝京东拖拽商品详情页上下滚动黏滞效果
2016-12-26 16:53 3505比较常用的效果,有现成的,如此甚好!:) import ... -
让任意view具有滑动效果的SlideUp
2016-12-26 09:26 1712基本的类,只有一个: import android.a ... -
AdvancedWebView
2016-12-21 09:44 16https://github.com/delight-im/A ... -
可设置圆角背景边框的按钮, 通过调节色彩明度自动计算按下(pressed)状态颜色
2016-11-02 22:13 1932可设置圆角背景边框的的按钮, 通过调节色彩明度自动计算按下(p ... -
网络请求库相关
2016-10-09 09:35 62https://github.com/amitshekhari ... -
ASimpleCache一个简单的缓存框架
2015-10-26 22:53 2185ASimpleCache 是一个为android制定的 轻量级 ... -
使用ViewDragHelper实现的DragLayout开门效果
2015-10-23 10:55 3424先看一下图,有个直观的了解,向下拖动handle就“开门了”: ... -
保证图片长宽比的同时拉伸图片ImageView
2015-10-16 15:40 3740按比例放大图片,不拉伸失真 import android. ...
相关推荐
为了能够处理来自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...
在Android应用开发中,WebView是一个重要的组件,它允许开发者在应用程序内部展示网页内容。而当涉及到与网页交互时,我们通常会用到WebViewClient和WebChromeClient这两个关键类。它们各自有不同的职责,协同工作以...
- 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`的使用、接口定义、客户端配置以及安全性控制。理解和熟练掌握这些知识点对于开发混合式应用至关重要。通过合理的使用,可以充分利用两者的优势...
可以用来处理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弹出框、处理...