随着后台技术的不断发展,App前端的应用都布置了Web页面的界面,这个界面就是由WebView组件渲染出来的。WebView由如下优点:可以直接显示和渲染Web页面或者网页;可以直接调用网络上或者本地的html文件,也可以和JavaScript交互使用。

1、WebView类提供的常用方法

2、 WebView的简单用法实现浏览网页

步骤:

布局文件

<WebViewandroid:id="@+id/webView"android:layout_width="match_parent"android:layout_height="match_parent"/>
MainActivity.kt文件

1、启用JavaScript的支持

调用WebSetting类的setJavaScriptEnabled()方法,设置启动JavaScript的支持

val webView:WebView=findViewById(R.id.webView)
webView.settings.javaScriptEnabled=true

2、目标的网页仍然在当前WebView中显示

调用WebView的setWebViewClient()方法,从一个网页跳转到另一个网页时,跳转的网页也在webView中显示

webView.webViewClient= WebViewClient()

3.将网址传入

调用WebView的loadUrl方法,将网址传入,显示网页内容

webView.loadUrl("https://www.baidu.com")

AndroidManifest文件

加入权限声明

访问网络时需要声明权限的,在AndroidManifest中加入以下权限声明

<uses-permission android:name="android.permission.INTERNET"/>

3、结合WebView方法做一个迷你浏览器

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><Buttonandroid:id="@+id/back"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="back"/><Buttonandroid:id="@+id/forward"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="forward"/><Buttonandroid:id="@+id/refresh"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="refresh"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><EditTextandroid:id="@+id/edittext"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="2" /><Buttonandroid:id="@+id/go"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="go" /></LinearLayout><WebViewandroid:id="@+id/webView"android:layout_width="match_parent"android:layout_height="match_parent"/>
</LinearLayout>
class MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)//控件val webView:WebView=findViewById(R.id.webView)val back:Button=findViewById(R.id.back)val forward:Button=findViewById(R.id.forward)val refresh:Button=findViewById(R.id.refresh)val go:Button=findViewById(R.id.go)val edittext:EditText=findViewById(R.id.edittext)//浏览网页webView.settings.javaScriptEnabled=true//启用JavaScript的支持webView.webViewClient= WebViewClient()//目标的网页仍然在当前WebView中显示webView.loadUrl("https://www.baidu.com")//.将网址传入//按键的点击事件back.setOnClickListener {webView.goBack()//返回}forward.setOnClickListener {webView.goForward()//前进}refresh.setOnClickListener {webView.reload()//重新加载当前页面}go.setOnClickListener {if(edittext.text.toString()!=null) {//判断是否输入网址webView.loadUrl("http://" +edittext.text.toString())//加载输入的网址webView.webViewClient=WebViewClient()}}}
}
 <uses-permission android:name="android.permission.INTERNET"/>

最终的效果图如下

 4、加载本地html页面

新建html的方法(android studio)

右键点击main->"New"->"Folder"->"Assets Folder"

在文件名的后面加".html"

步骤

1.在布局文件中添加WebView组件

<WebViewandroid:id="@+id/webView"android:layout_width="match_parent"android:layout_height="match_parent"/>

2、调用WebView的loadUrl()方法(注意是三条///)

val webView:WebView=findViewById(R.id.webView)webView.loadUrl("file:///android_asset/a.html")

5、于JavaScript交互调用

WebSetting类提供的常用方法

步骤

在布局文件中添加WebView, 调用WebSetting类的setJavaScriptEnabled()方法,设置启动JavaScript的支持,调用WebView的setWebViewClient()方法,调用WebView的loadUrl方法,将html文件传入,新建JavaScriptObject类,调用addJavascriptInterface方法,这样,我们就可以通过js直接使用app,执行JavaScriptObject类里面的方法。

例子展示JavaScript调用Android的通话功能

html文件

<html><head><title>JavaScript交互</title></head><body>hello</body>
</html>
<script language="JavaScript">app.call("10086");
</script>

布局文件(上面已有,就不多放代码了)

AndroidManifest文件

class MainActivity : AppCompatActivity() {class JavaScriptObject(var context: Context) {@JavascriptInterface//一定要添加这个标签,将该方法暴露给JavaScriptfun call(n:String){var intent= Intent(Intent.ACTION_DIAL).setData(Uri.parse("tel:" + n));startActivity(context,intent,null);}}override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)val webView:WebView=findViewById(R.id.webView)webView.webViewClient=WebViewClient()webView.settings.javaScriptEnabled=true;webView.loadUrl("file:///android_asset/a.html")webView.addJavascriptInterface(JavaScriptObject(this),"app")}
}

在"Manifest"文件添加电话的权限

<uses-permission android:name="android.permission.CALL_PHONE" />

运行结果如图

android开发,使用kotlin学习WebView(详细)相关推荐

  1. android list嵌套list,Android开发日常-listVIiew嵌套webView回显阅读位置

    详情页布局结构 需求是回显webview展示网页的阅读位置 方案1: 使用webview.getScrollY()获取滑动到的位置,用setScrollY()回显设置, 但是两个方法都出现了问题,ge ...

  2. Android开发书籍推荐 学习路线图 资料汇整

    小编注:最近,小编们一直在收集,整理一些针对包括程序员.运营.设计师等在内的系统学习资料,希望给初学者一些参考,也给已经入门的人一些进阶建议,让知识体系更加系统化.当然,这个工作不可能一蹴而就,也相当 ...

  3. [安卓开发笔记一]Android开发配置opencv环境超详细教程

    [安卓开发笔记一]Android开发配置opencv环境超详细教程 [更新于 2022年4月] 再次提醒,建议现在看到这篇文章的,仅仅把此文做一个流程参考,4年前android studio就使用cm ...

  4. Android开发:kotlin语言实现简易计算器

    Android开发:kotlin语言实现简易计算器 1. 实现效果 2. 主要文件代码: 界面布局:activity_main.xml文件代码 字符定义:string.xml文件代码 逻辑实现:Mai ...

  5. Android开发获取当前经纬度和详细位置信息(原生代码实现)简单案例

    文章目录 Android定位(经纬度+当前位置信息) 申请权限 LocationManage位置管理器 完整代码 Android定位(经纬度+当前位置信息) 我相信大家在Android开发中应该都有遇 ...

  6. Android开发之路之 webview

    公众号: 欢迎关注我的个人公众号,来一起交流Android 开发知识 一.简介 本来不想专门找一节来介绍webview技术的,因为现在对于混合开发有很多的框架比如RN和FLutter,但是这些框架对于 ...

  7. 58APP引入Kotlin进行Android开发,kotlin高阶函数斐波那契

    kotlin代码可与java代码放到相同目录,但是放到一起回比较混乱,为了将kotlin与java代码隔离新建一个kotlin目录,并且sourceSets做以下修改 java.srcDirs = [ ...

  8. 用于 Android 开发的 Kotlin 与 Java

    Android 应用程序已成为我们日常生活中不可或缺的一部分:例如,许多企业使用 Android 应用程序与客户交流.然而,为 Android 开发选择最佳编程语言可能是一项艰巨的任务. 在 Kotl ...

  9. Android开发:Kotlin下配置DataBinding

    近日,随着Google召开了Google I/O 2017,Kotlin大火一把.因为Google宣布Kotlin为First-class开发语言作 为一名Kotlin忠实粉丝,高兴地很呀.虽然短 时 ...

  10. Android开发基础——Kotlin简介

    什么是Kotlin Java代码在运行前需要编译生成一种特殊的class文件,然后Java虚拟机会识别并解释这些class文件,而Kotlin作为一种新的编程语言,就是将其代码同样编译生成为这样的cl ...

最新文章

  1. petalinux 下使用 xsa 查看所有的 Zynq Reg 设置
  2. python语句分为复合语句_复合语句if条件的Python求值
  3. python 多分类 recall_python实现二分类和多分类的ROC曲线教程
  4. linux内核注释目录,linux内核完全注释目录
  5. Warning: Unknown: The session id is too long
  6. LeetCode 390. 消除游戏(类似约瑟夫环,找映射规律)
  7. 汉字转html实体符号js_js转html实体
  8. 长期没有工作是什么感觉?
  9. [bzoj3527][Zjoi2014]力
  10. 纪念 C语言之父 丹尼斯·里奇 逝世11周年:他发明了计算机世界的钢筋水泥!...
  11. mysql服务器版本手册_MySQL中文参考手册——与MySQL服务器连接
  12. nmap快速扫描大量主机端口方法
  13. 计算机组装与维护研究内容,计算机组装与维护论文大纲格式模板 计算机组装与维护论文提纲怎么写...
  14. Windows Route 路由表命令详解
  15. VB.NET excel 列排序
  16. Praat脚本-029 | 一种更有效的校对音频内容的方案
  17. 大整理!程序员最爱的12个免费Python课程
  18. 雅虎黯然离场 但我们并没有因此怀念它
  19. 炒币机器人如何助你韭菜被割还能褥到羊毛
  20. 读书笔记——《when breath becomes air》《超越自卑》

热门文章

  1. 关于最近用于细粒度车辆分类的深度学习框架的系统评估
  2. FreeMarker(一)
  3. Pytorch应用之——人民币总结
  4. 无创血压和有创血压区别
  5. 看完老板就给加薪了!轻松获得一线大厂面试offer,大厂面试题汇总
  6. 民营物流公司迫切需要政策支持
  7. Spring框架源码阅读读后感
  8. JavaScript中的ParseInt的用法
  9. Ant Design Vue 组件@chang绑定方法如何传递自定义参数
  10. js前端身份证完美验证