飘逸永恒,姑苏美食网,旅顺教育网
本文记录如何让网页中的js代码和app进行交互,简单的说就是如何在网页中执行app的代码。下面以在网页中执行代码打开拨号键盘并输入电话号码为例介绍如何实现。
一、设置webview允许它执行js代码。
二、通过调用webview的addjavascriptinterface添加一个对象给js使用,添加完毕后在js里面相当于给window对象增加了一个子对象,比如addjavascriptinterface(obj,"app"),那么在js里面我们就可以直接使用app.来访问对象暴露给js的方法。
三、不要忘记在清单文件里面给app添加拨打电话权限,<uses-permission android:name="android.permission.call_phone" />
代码非常简单,就几行代码即可完成,注意不是完善的代码。
app端:
1 class mainactivity : appcompatactivity() { 2 class jsobject(var ctx: context) { //暴露给js的类 3 @javascriptinterface //要想让js访问该类的方法,在方法上加个这,我也不知道是啥玩意 4 fun call(n:string) 5 { 6 var intent=intent(intent.action_dial).setdata(uri.parse("tel:" + n)); 7 startactivity(ctx,intent,null); 8 } 9 } 10 override fun oncreate(savedinstancestate: bundle?) { 11 super.oncreate(savedinstancestate) 12 var web:webview= webview(this) 13 setcontentview(web) 14 web.webviewclient=webviewclient() 15 web.settings.setjavascriptenabled(true);//设置webview允许它执行js代码 16 web.loadurl("file:///android_asset/a.html") //这个地方使用了本地资源 17 web.addjavascriptinterface(jsobject(this),"app")//暴露给js一个对象app, 18 } 19 }
因为是学习不到2天,很多东西都一知半解,顺便记录下如何把资源打包到app里面,点击android studio 的file -> new -> folder -> assets folder 弹出对话框选择一个路径,默认即可,这时工程文件里就多了一个assets文件夹,我们把网页文件a.html拷贝到这个文件夹里面在工程里它就自动出现了,我们就可以使用这个文件了,这个文件的路径是file:///android_asset/+文件名。不知道有没有别的办法可以添加资源,也不知道assets文件名字能改不?
a.html代码
<html> <head> <title>测试网页</title> </head> <body> hello </body> </html> <script language="javascript"> app.call("123456789"); </script>
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Android apk 项目一键打包并上传到蒲公英的实现方法
Android 自定义LineLayout实现满屏任意拖动功能的示例代码
android 限制某个操作每天只能操作指定的次数(示例代码详解)
Android 集成 google 登录并获取性别等隐私信息的实现代码
网友评论