来源google开源项目
http://code.google.com/p/apps-for-android/source/browse/trunk/Samples/WebViewDemo/
我对其进行了修改,并加了简单的注释,这个例子的不仅是对js的操作,它还对android浏览器做了简单的介绍,
这些我会在注释中一一讲解。
Javascript弹出框有如下三种:
alert();
window.confirm("Are you srue?");
window.prompt("Please input some word";,"this is text");
WebChromeClient 中对三种dialog进行了捕捉,但不幸的是,并没有回调函数可以使用,
或者说不能获得用户是点击“OK”还是“CANCEL”的操作结果。
个人以为,这些方法的设置是为了对一些涉及到html操作的应用程序进行测试时使用的。
在WebChromeClient中还有以下的方法:
onProgressChanged(WebView view, int newProgress);
onReceivedIcon(WebView view, Bitmap icon);
onReceivedTitle(WebView view, String title);
onRequestFocus(WebView view);
onCloseWindow(WebView window);
onProgressChanged(WebView view, int newProgress)
这些方法的使用我会在以后的博文中讲到.
请大家先看今天讲解的重点
public class WebViewDemo extends Activity {
private static final String LOG_TAG = "WebViewDemo";
private WebView mWebView;
private TextView mReusultText ;
private Handler mHandler = new Handler();
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
//获得浏览器组件
//WebView就是一个简单的浏览器
//android浏览器源码存在于LINUX\android\package\apps\Browser中
//里面的所有操作都是围绕WebView来展开的
mWebView = (WebView) findViewById(R.id.webview);
mReusultText = (TextView) findViewById(R.id.resultText);
//WebSettings 几乎浏览器的所有设置都在该类中进行
WebSettings webSettings = mWebView.getSettings();
webSettings.setSavePassword(false);
webSettings.setSaveFormData(false);
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportZoom(false);
mWebView.setWebChromeClient(new MyWebChromeClient());
/*
* DemoJavaScriptInterface类为js调用android服务器端提供接口
* android 作为DemoJavaScriptInterface类的客户端接口被js调用
* 调用的具体方法在DemoJavaScriptInterface中定义:
* 例如该实例中的clickOnAndroid
*/
mWebView.addJavascriptInterface(new DemoJavaScriptInterface(),"androd");
mWebView.loadUrl("file:///android_asset/page.html");
}
final class DemoJavaScriptInterface {
DemoJavaScriptInterface() {}
/**
* 该方法被浏览器端调用
*/
public void clickOnAndroid() {
mHandler.post(new Runnable() {
public void run() {
//调用js中的onJsAndroid方法
mWebView.loadUrl("javascript:onJsAndroid()");
}
});
}
}
/**
* 继承WebChromeClient类
* 对js弹出框时间进行处理
*
*/
final class MyWebChromeClient extends WebChromeClient {
/**
* 处理alert弹出框
*/
@Override
public boolean onJsAlert(WebView view,String url,
String message,JsResult result) {
Log.d(LOG_TAG,"onJsAlert:"+message");
mReusultText.setText("Alert:"+message);
//对alert的简单封装
new AlertDialog.Builder(WebViewDemo.this).
setTitle("Alert").setMessage(message).setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
//TODO
}
}).create().show();
result.confirm();
return true;
}
/**
* 处理confirm弹出框
*/
@Override
public boolean onJsConfirm(WebView view, String url, String message,
JsResult result) {
Log.d(LOG_TAG, "onJsConfirm:"+message);
mReusultText.setText("Confirm:"+message);
result.confirm();
return super.onJsConfirm(view, url, message, result);
}
/**
* 处理prompt弹出框
*/
@Override
public boolean onJsPrompt(WebView view, String url, String message,
String defaultValue, JsPromptResult result) {
Log.d(LOG_TAG,"onJsPrompt:"+message);
mReusultText.setText("Prompt input is :"+message);
result.confirm();
return super.onJsPrompt(view, url, message, message, result);
}
}
}
java代码如上所示,html页面代码放在code文件中,在这不做讲解。
在项目中有两个链接:
jsDemo为以上代码对应的html
webDemo为google开源项目中的文件
导入工程后请配置Build Path, sdk1.6以上版本均可兼容。
分享到:
相关推荐
在Android开发中,Dialog是一种常见的用户交互元素,用于在用户界面中显示临时信息或进行简单的交互操作。通常,当我们使用AlertDialog构建一个对话框时,它的默认行为是在用户点击按钮(如"确定"或"取消")后自动...
在Android开发中,底部弹出Dialog是一种常见的交互方式,它用于显示临时信息或者提供用户一些简短的操作选项。本文将详细讲解如何实现一个带有动画效果的底部弹出Dialog,并通过具体的代码实例进行演示。 首先,...
在Android开发中 我们经常会需要在Android界面上弹出一些对话框 比如询问用户或者让用户选择 关于Android Dialog的使用方法 已经有很多blog做出了详细的介绍(比如博客:7种形式的Android Dialog使用举例) 但是只是...
各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果...
在Android应用开发中,对话框(Dialog)是一种常见的用户交互元素,用于向用户展示临时信息、请求确认或者提供选项。标题提到的“Android-dialog库”是Android开发中的一个第三方库,它提供了一种灵活的方式,使得...
本资源集合了Android中常用的Dialog样式,通过分析和学习,可以帮助开发者更高效地创建符合设计要求的对话框。 首先,让我们了解Dialog的基本结构和使用方式。Dialog是基于Activity的,通常由`AlertDialog.Builder`...
在Android中,我们可以使用Zxing库或Google的`com.google.zxing`库来生成二维码。这里我们以Zxing为例,它提供了`com.google.zxing.client.android.EncodeActivity`类来帮助我们生成二维码图片。 1. **集成Zxing库*...
在Android开发中,有时我们需要在Dialog中展示动态内容,如GIF动图,来提供更丰富的用户交互体验。本文将详细讲解如何在Android Dialog中利用Glide库加载并播放GIF。 首先,Glide是一个非常流行的Android图片加载库...
在Android开发中,Dialog是一种非常常见的用户界面组件,它用于在主界面之上显示临时信息或者进行简单的交互。本文将详细讲解五种不同的方法来在Android应用中实现Dialog,并结合源码进行解析。 1. **AlertDialog**...
本篇文章将深入探讨如何在Android中创建带有多种动画效果的自定义Dialog。 首先,我们要理解Android Dialog的基础概念。Dialog是一种轻量级的窗口,它浮现在应用的主视图之上,用于向用户展示临时信息或进行简单的...
本教程将探讨如何在Android中自定义一个美观的Dialog,并在其内部嵌入一个ListView,以便展示更多信息。这个自定义Dialog可以用于显示一系列可选项目,用户可以通过点击ListView中的条目来进行交互。 首先,我们...
在Android开发中,自定义Dialog是一种常见的用户交互方式,它能提供更为丰富的界面和功能,以满足特定场景下的需求。本教程将详细讲解如何创建一个全屏显示且带有动画效果的自定义Dialog,并结合相机和图片选择的...
在Android开发中,Dialog是一种非常重要的组件,它用于在用户界面中显示临时的、轻量级的窗口,通常用于向用户展示警告、确认信息或者进行简单的交互操作。本课件"Android课件(4Dialog).zip"可能包含了关于如何在...
本文将深入探讨安卓Android源码中的Dialog对话框,揭示其工作原理及如何自定义和使用。 首先,让我们了解Dialog的基本结构。在Android框架中,Dialog类是基于AlertDialog.Builder构建的,它提供了多种类型的对话框...
在Android中,Dialog通常通过继承`AlertDialog.Builder`或直接使用`AlertDialog`类来创建。在这个例子中,我们可能会创建一个新的类,扩展`AlertDialog`或`DialogFragment`,以便更好地管理和控制Dialog的生命周期。...
3. **理解基本概念**:熟悉Android中Dialog的基本用法,了解LayoutInflater的作用及如何使用findViewById方法获取控件引用。 #### 三、实现步骤 接下来,我们将按照以下步骤来实现带有输入框的Dialog,并从中获取...
在Android开发中,有时我们可能需要创建具有独特设计和功能的对话框,以满足特定的用户界面需求。这里我们将深入探讨两种实现自定义显示内容的Dialog的方法:继承Dialog和继承PopupWindow。 首先,我们来看继承...
首先,我们要了解Android中的Dialog。Dialog是Android UI组件之一,它浮现在应用程序的窗口之上,用来显示一些临时信息或者请求用户的输入。默认的Dialog样式可能不能满足所有设计需求,因此自定义Dialog就显得尤为...
在Android开发中,自定义Dialog是一项常见的需求,它允许开发者根据应用的UI风格和功能需求进行个性化设计。本文将深入探讨如何自定义一个Android Dialog,特别是实现一个类似于支付密码输入框的功能,其中EditText...