Android-----js和android的互调
Android-----js和android的互调
我对其进行了修改,并加了简单的注释,这个例子的不仅是对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-----js和android的互调的更多相关文章
- [转]JS调用Android里面的方法,Android调用JS里面的方法
FROM : http://blog.csdn.net/hj563308597/article/details/45197709 Android WebView 在公司Android的开发过程中遇到一 ...
- WebView中JS调用Android Method 遇到的坑整理
WebView是android中常用的一个组件,其作用是展示网页,并让网页和android app进行一些业务逻辑上的交互. 其坑无数,相信用过的都知道,一个一个来解决吧. 1.怎么互调: <! ...
- JS调用Android、Ios原生控件
在上一篇博客中已经和大家聊了,关于JS与Android.Ios原生控件之间相互通信的详细代码实现,今天我们一起聊一下JS调用Android.Ios通信的相同点和不同点,以便帮助我们在进行混合式开发时, ...
- Atitit.android js 的键盘按键检测Back键Home键和Menu键事件
Atitit.android js 的键盘按键检测Back键Home键和Menu键事件 1. onKeyDown @Override public boolean onKeyDown(int keyC ...
- WebView中Js与Android本地函数的相互调用
介绍 随着Html5的普及,html在表现力上不一定比原生应用差,并且有很强的扩展兼容性,所以越来越多的应用是采用Html与Android原生混合开发模式实现. 既然要实现混合开发,那么Js与Andr ...
- PhoneGap或者Cordova框架下实现Html5中JS调用Android原生代码
PhoneGap或者Cordova框架下实现Html5中JS调用Android原生代码 看看新闻网>看引擎>开源产品 0人收藏此文章, 发表于8小时前(2013-09-06 00:39) ...
- js和android及ios交互
Android中Java和JavaScript交互 这种交互,Hybrid App 会用的比较多一点, 本文将介绍如何实现Java代码和Javascript代码的相互调用. Android提供了一个很 ...
- WebView之js调用Android类的方法传递数据
1,具体的思路如下: 在android中写一个Activity,里面写一个webview,这个webview加载本地的一个html文件,显示这个网页,这个网页包括一个用户名和密码的输入框和两个按钮(只 ...
- Android JS桥交互("Uncaught ReferenceError: xxx is not defined or xxx has no method")
网上android和js交互的代码有不少,也很容易搜到.最近在做的项目需要用到js桥,遇到了一些问题,记录下来,希望以后遇到能马上解决掉. 一开始我找的demo是从这个:http://blog.csd ...
- js调用android本地java代码
js调用android本地java代码 当在Android上使用WebView控件开发一个Web应用时,可以创建一个通过Javascript调用Android端java代码的接口.也就是可以通过Jav ...
随机推荐
- 浅谈Java单例模式
关于基本的懒汉式,饿汉式等写法网上介绍多如牛毛,这里不再赘述,直接讨论加了volatile关键字的双重锁(Double check),静态内部类以及枚举等写法,如有不对,恳请读者指出,欢迎讨论. 1. ...
- Ant 警告:sun.misc.BASE64Decoder 是 Sun 的专用 API,可能会在未来版本中删除
如果你用Ant编译项目,而且在项目中用了SUN的专用API,你会得到警告信息,然后Ant会报告编译失败: 这当然是不合理的,javac只是警告而已,ant凭什么就直接报失败呢? 其实最好的解决办法是避 ...
- 了解 : prevent default
基本了解是阻止事件之前设置好的事件触发,像是angular router ui里的 preventDefault是这样的. 在$stateChange的是后,可以调用preventDefault 来阻 ...
- Android学习总结(一)——Activity的基本概念与Activity的生命周期
一.Activity的基本概念 Activity是Android的四大组件之一,它是一种可以包含用户界面的组件,主要用于和用户进行交互,比如打电话,照相,发送邮件,或者显示一个地图!Activity用 ...
- 3月题外:关于GeoServer和OpenLayers3实用开源插件或组件的总结
Geoserver篇 注意: 1)用法 GeoServer-Extension的使用方法:将jar包直接放入部署在tomcat上的geoserver/WEB-INF/lib文件夹中 2)在安装插件时, ...
- LeetCode 笔记总结
前言 之前把一些LeetCode题目的思路写在了本子上,现在把这些全都放到博客上,以后翻阅比较方便. 题目 99.Recover Binary Search Tree 题意 Two elements ...
- 2017,科学使用strace神器(附代码,举栗子)
我感到惊讶,都2017年了,几乎没有人知道他们可以使用strace的了解所有事情.它总是我拔出的第一个调试工具之一,因为它通常在我运行的Linux系统上可用,并且它可以用于解决各种各样的问题. 什么是 ...
- wemall app商城源码Android之支付宝接口公用函数
wemall-mobile是基于WeMall的Android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享wemall app商城源码Android之 ...
- JDBC-Eclipse & Mysql & Servlet实现
import java.io.IOException;import java.io.PrintWriter;import java.sql.Connection;import java.sql.Dri ...
- js页面跳转常用的几种方式
第一种: <script language="javascript" type="text/javascript"> window.location ...
