android中通过kotlin使用WebView(二)
时间:2020-03-27
本文章向大家介绍android中通过kotlin使用WebView(二),主要包括android中通过kotlin使用WebView(二)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
本文记录如何让网页中的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>
原文地址:https://www.cnblogs.com/gushandujian/p/12583796.html
- [ASP.NET MVC]如何定制Numeric属性/字段验证消息
- 为.NET Core项目定义Item Template
- 晚绑定场景下对象属性赋值和取值可以不需要PropertyInfo
- 一个关于反序列化的小问题
- 两个简单的扩展方法:TrimPrefix和TrimSuffix
- 谈谈Nullable<T>的类型转换问题
- ASP.NET MVC是如何运行的(3): Controller的激活
- ASP.NET MVC是如何运行的[2]: URL路由
- 一个简单的小程序演示Unity的三种依赖注入方式
- 在Entity Framework中使用存储过程(三):逻辑删除的实现与自增长列值返回
- 在Entity Framework中使用存储过程(四):如何为Delete存储过程参数赋上Current值?
- ASP.NET MVC是如何运行的(4): Action的执行
- ASP.NET MVC是如何运行的[1]: 建立在“伪”MVC框架上的Web应用
- 在Entity Framework中使用存储过程(五):如何通过存储过程维护多对多关系?
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 2019夏令营笔试编程题
- redis学习(四)
- 使用 Yaml 进行 selenium 的 po 设计
- 几道暑期实习笔试题
- Java自动化测试(selenium 22)
- linux 实现双网卡绑定单个IP——team篇
- Eclipse华丽转身之控件表格工厂
- 面试常考知识点总结——面试必看
- linux 实现双网卡绑定单个IP——bond篇
- Hacking with iOS: SwiftUI Edition - 愿望清单项目(一)
- 重拾Java Web应用的基础体系结构
- 使用SAP C4C自定义BO实现自定义的Number Range
- 限流算法简介及Guava RateLimiter令牌桶限流介绍
- K8S的名称空间创建&&版本的升级、回滚操作
- SAP Cloud for Customer CLR(Code List Restriction)的一种高级用法