首页

文章

android与javascript的交互可以不通过webview吗

发布网友 发布时间:2022-04-19 20:27

我来回答

1个回答

热心网友 时间:2022-04-23 09:05

在android的应用程序中,可以直接调用webview中的javascript代码,而webview中的javascript代码,也可以去调用ANDROID应用程序(也就是JAVA部分的代码).下面举例说明之:

1 JAVASCRIPT脚本调用android程序

要在webview中,调用addJavascriptInterface(OBJ,interfacename)
其中,obj为和javascript通信的应用程序,interfacename为提供给JAVASCRIPT调用的
名称,设置如下:

?
1
2
3
4
5
WebView webView = new WebView(this); 
webView.getSettings().setJavaScriptEnabled(true); 
webView.loadUrl(getIntent().getCharSequenceExtra("url").toString()); 
//设定JavaScript脚本代码的界面名称是”android” 
webView.addJavascriptInterface(this, "android");
其中WEBVIEW调用的HTML页中,JS如下:

?
1
2
3
4
<script type="text/javascript"> 
function ok() { 
  android.js(document.forms[0].elements[0].value, document.forms[0].elements[1].value);
 }
而这个android.js在哪呢?那是在应用程序中的

?
1
2
3
4
//JavaScript脚本代码可以调用的函数js()处理 
public void js(String action, String uri) { 
          ...../ 
}
这个JS中就是处理JAVASCRIPT发送过来的请求了.

2) 下面的例子,当WEBVIEW网页中输入后,点提交按钮,会跟ANDROID的应用程序进行交互

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
WebView webView = new WebView(this); 
webView.getSettings().setJavaScriptEnabled(true); 
webView.setWebChromeClient(new MyWebChromeClient()); 
webView.loadUrl(getIntent().getCharSequenceExtra("url").toString()); 
 
//onJsAlert()函数接收到来自HTML网页的alert()警告信息 
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
 if (message.length() != 0) { 
AlertDialog.Builder builder = new AlertDialog.Builder(JExample02.this); 
builder.setTitle("From JavaScript").setMessage(message).show(); 
result.cancel(); 
return true; 

return false; 
}
而HTML页中的JS事件为:

?
1
<input type="button" value="alert" onclick="alert(document.forms[0].elements[0].value)">
特别提示下,在自定义的MyWebChromeClient())中,除了可以重写onJSAlert外,还可以
重写onJsPrompt,onJsConfirm等,可以参考
http://618119.com/archives/2010/12/20/199.html

3) 下面这个例子,先显示第一张图片,点一点后,再显示第2张图片
HTML JS中:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
   <script language="javascript"> 
    function changeImage02() { 
        document.getElementById("image").src="navy02.jpg"; 
    } 
    function changeImage01() { 
        document.getElementById("image").src="navy01.jpg"; 
    } 
  </script> 
</head> 
<body> 
  <a onClick="window.demo.onClick()"> 
    <img id="image" src="navy01.jpg"/></a> 
</body>
当点<a onClick="window.demo.onClick()">
后,调用ANDROID应用程序中的处理部分,看程序:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
webView.addJavascriptInterface(new JSInterface(),"demo"); 
 
public final class JSInterface { 
        //JavaScript脚本代码可以调用的函数onClick()处理
 
        public void onClick() { 
            handler.post(new Runnable() { 
                public void run() { 
                    if (flag == 0) { 
                    flag = 1; 
                    webView.loadUrl("javascript:changeImage02()"); 
                    } else { 
                    flag = 0; 
                    webView.loadUrl("javascript:changeImage01()"); 
                    } 
                } 
            }); 
        } 
    }
可以看到,ANDROID中,通过webView.loadUrl去调用HTML页面中的JS

历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 高分!换显卡nvidia控制面板被我卸了,重新安装显卡驱动后没了nvidia控... 我的nvidia控制面板被卸载了 怎么找回啊 卸载后 这个画面看着很奇怪_百 ... 李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 “君不见巴丘古城如培塿”的出处是哪里 带“奈何”的诗句大全(229句) 里翁行()拼音版、注音及读音 带“不虑”的诗句 “鲁肃当年万人守”的出处是哪里 无尘防尘棚 进出口报关流程,越详细越好。谢谢大家指教。 双线桥不是看化合价升多少就标多少的吗?为什么CL2+2KI=2KCL+I2中I失... 原生APP中js怎样与Android和ios进行交互 Android如何调用框架iframe里面的js方法 急急急急... 安卓和javascript交互必须通过webView吗?可以用安... 什么是js框架? android 混合开发 框架有哪些 在Android开发过程中搭建一个自己的应用框架有几个... 怎样在Android开发中与js进行交互 android与js交互实现什么功能 js的框架能用到android开发中吗?比如echart,momen... 在Android上怎样实现JAVA和JS交互 孩子上户口 关于孩子上户口 孩子上户口怎么办 怎样给孩子上户口 小孩子上户口需要办理什么手续? 如何给孩子上户口? 孩子上户口需要什么资料 给孩子上户口需要什么条件 给孩子上户口需要什么证件 孩子上户口需要带什么证件 reactnative中android与js只进行数据交互该怎么做 android js交互获取不到Android的方法 Android使用WebView和JS交互的问题 androidwebview加载本地js怎么实现交互 android 前端框架有哪些 Android开发中有没有类似Web前端的UI框架 android和h5交互,js怎么在android端打印日志 敢当石襄错了怎样办 柳土獐的介绍 什么是沙笔? 暗黑剧情相关问题,灵魂之石. 为什么古代的文人比较喜欢养鹅而不是鸳鸯 石姓起名字 古代的鹅象征 鹅的象征意义 开封到襄源有多少公里 我想知道我的命属于金木水火土中哪一种, 怎么算 ... qq侠义道2花钱买点什么呀 取名!!帮帮忙 谁知道十七届希望杯初二年级的获奖名单?谢谢!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com