[首页]
[文章]
[教程]
首页
Web开发
Windows开发
编程语言
数据库技术
移动平台
系统服务
微信
设计
布布扣
其他
数据分析
首页
>
移动平台
> 详细
Android-----js和android的互调
时间:
2016-05-16 23:13:36
阅读:
205
评论:
0
收藏:
0
[点我收藏+]
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);
}
}
}
分类:
Android
好文要顶
关注我
收藏该文
OAKPIP
关注 - 10
粉丝 - 40
+加关注
4
0
(请您对文章做出评价)
«
上一篇:
Android-----WebView使用
»
下一篇:
Android-----RelativeLayout属性
Android-----js和android的互调
原文:http://www.cnblogs.com/lenkevin/p/5499833.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年09月23日 (328)
2021年09月24日 (313)
2021年09月17日 (191)
2021年09月15日 (369)
2021年09月16日 (411)
2021年09月13日 (439)
2021年09月11日 (398)
2021年09月12日 (393)
2021年09月10日 (160)
2021年09月08日 (222)
最新文章
更多>
2021/09/28 scripts
2022-05-27
vue自定义全局指令v-emoji限制input输入表情和特殊字符
2022-05-27
9.26学习总结
2022-05-27
vim操作
2022-05-27
深入理解计算机基础 第三章
2022-05-27
C++ string 作为形参与引用传递(转)
2022-05-27
python 加解密
2022-05-27
JavaScript-对象数组里根据id获取name,对象可能有children属性
2022-05-27
SQL语句——保持现有内容在后面增加内容
2022-05-27
virsh命令文档
2022-05-27
教程昨日排行
更多>
1.
list.reverse()
2.
Django Admin 管理工具
3.
AppML 案例模型
4.
HTML 标签列表(功能排序)
5.
HTML 颜色名
6.
HTML 语言代码
7.
jQuery 事件
8.
jEasyUI 创建分割按钮
9.
jEasyUI 创建复杂布局
10.
jEasyUI 创建简单窗口
友情链接
汇智网
PHP教程
插件网
关于我们
-
联系我们
-
留言反馈
- 联系我们:wmxa8@hotmail.com
© 2014
bubuko.com
版权所有
打开技术之扣,分享程序人生!