android开发,使用kotlin学习WebView(详细)
随着后台技术的不断发展,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(详细)相关推荐
- android list嵌套list,Android开发日常-listVIiew嵌套webView回显阅读位置
详情页布局结构 需求是回显webview展示网页的阅读位置 方案1: 使用webview.getScrollY()获取滑动到的位置,用setScrollY()回显设置, 但是两个方法都出现了问题,ge ...
- Android开发书籍推荐 学习路线图 资料汇整
小编注:最近,小编们一直在收集,整理一些针对包括程序员.运营.设计师等在内的系统学习资料,希望给初学者一些参考,也给已经入门的人一些进阶建议,让知识体系更加系统化.当然,这个工作不可能一蹴而就,也相当 ...
- [安卓开发笔记一]Android开发配置opencv环境超详细教程
[安卓开发笔记一]Android开发配置opencv环境超详细教程 [更新于 2022年4月] 再次提醒,建议现在看到这篇文章的,仅仅把此文做一个流程参考,4年前android studio就使用cm ...
- Android开发:kotlin语言实现简易计算器
Android开发:kotlin语言实现简易计算器 1. 实现效果 2. 主要文件代码: 界面布局:activity_main.xml文件代码 字符定义:string.xml文件代码 逻辑实现:Mai ...
- Android开发获取当前经纬度和详细位置信息(原生代码实现)简单案例
文章目录 Android定位(经纬度+当前位置信息) 申请权限 LocationManage位置管理器 完整代码 Android定位(经纬度+当前位置信息) 我相信大家在Android开发中应该都有遇 ...
- Android开发之路之 webview
公众号: 欢迎关注我的个人公众号,来一起交流Android 开发知识 一.简介 本来不想专门找一节来介绍webview技术的,因为现在对于混合开发有很多的框架比如RN和FLutter,但是这些框架对于 ...
- 58APP引入Kotlin进行Android开发,kotlin高阶函数斐波那契
kotlin代码可与java代码放到相同目录,但是放到一起回比较混乱,为了将kotlin与java代码隔离新建一个kotlin目录,并且sourceSets做以下修改 java.srcDirs = [ ...
- 用于 Android 开发的 Kotlin 与 Java
Android 应用程序已成为我们日常生活中不可或缺的一部分:例如,许多企业使用 Android 应用程序与客户交流.然而,为 Android 开发选择最佳编程语言可能是一项艰巨的任务. 在 Kotl ...
- Android开发:Kotlin下配置DataBinding
近日,随着Google召开了Google I/O 2017,Kotlin大火一把.因为Google宣布Kotlin为First-class开发语言作 为一名Kotlin忠实粉丝,高兴地很呀.虽然短 时 ...
- Android开发基础——Kotlin简介
什么是Kotlin Java代码在运行前需要编译生成一种特殊的class文件,然后Java虚拟机会识别并解释这些class文件,而Kotlin作为一种新的编程语言,就是将其代码同样编译生成为这样的cl ...
最新文章
- petalinux 下使用 xsa 查看所有的 Zynq Reg 设置
- python语句分为复合语句_复合语句if条件的Python求值
- python 多分类 recall_python实现二分类和多分类的ROC曲线教程
- linux内核注释目录,linux内核完全注释目录
- Warning: Unknown: The session id is too long
- LeetCode 390. 消除游戏(类似约瑟夫环,找映射规律)
- 汉字转html实体符号js_js转html实体
- 长期没有工作是什么感觉?
- [bzoj3527][Zjoi2014]力
- 纪念 C语言之父 丹尼斯·里奇 逝世11周年:他发明了计算机世界的钢筋水泥!...
- mysql服务器版本手册_MySQL中文参考手册——与MySQL服务器连接
- nmap快速扫描大量主机端口方法
- 计算机组装与维护研究内容,计算机组装与维护论文大纲格式模板 计算机组装与维护论文提纲怎么写...
- Windows Route 路由表命令详解
- VB.NET excel 列排序
- Praat脚本-029 | 一种更有效的校对音频内容的方案
- 大整理!程序员最爱的12个免费Python课程
- 雅虎黯然离场 但我们并没有因此怀念它
- 炒币机器人如何助你韭菜被割还能褥到羊毛
- 读书笔记——《when breath becomes air》《超越自卑》