Kotlin语言使用WebView示例介绍

作者:枕上书531 时间:2021-10-14 05:56:21 

1、WebView类提供的常用方法

Kotlin语言使用WebView示例介绍

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

步骤:

布局文件

<WebView
       android: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">
   <LinearLayout
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:orientation="horizontal">
       <Button
           android:id="@+id/back"
           android:layout_width="0dp"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:text="back"/>
       <Button
           android:id="@+id/forward"
           android:layout_width="0dp"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:text="forward"/>
       <Button
           android:id="@+id/refresh"
           android:layout_width="0dp"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:text="refresh"/>
   </LinearLayout>
   <LinearLayout
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:orientation="horizontal">
       <EditText
           android:id="@+id/edittext"
           android:layout_width="0dp"
           android:layout_height="wrap_content"
           android:layout_weight="2" />
       <Button
           android:id="@+id/go"
           android:layout_width="0dp"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:text="go" />
   </LinearLayout>
   <WebView
       android: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"/>

最终的效果图如下

Kotlin语言使用WebView示例介绍

4、加载本地html页面

新建html的方法(android studio)

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

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

步骤

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

<WebView
       android: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类提供的常用方法

Kotlin语言使用WebView示例介绍

步骤

在布局文件中添加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//一定要添加这个标签,将该方法暴露给JavaScript
          fun 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" />

运行结果如图

Kotlin语言使用WebView示例介绍

来源:https://blog.csdn.net/weixin_63357306/article/details/126484045

标签:Kotlin,Android,WebView
0
投稿

猜你喜欢

  • SpringBoot自动配置原理详解

    2023-08-19 09:25:55
  • C# Winform调用百度接口实现人脸识别教程(附源码)

    2021-12-27 13:17:09
  • Java本地缓存的实现代码

    2022-02-22 11:21:04
  • Android中ACTION_CANCEL的触发机制与滑出子view的情况

    2023-08-01 14:39:09
  • Android 基于百度语音的语音交互功能(推荐)

    2021-08-22 01:26:38
  • Android热修复Tinker接入及源码解读

    2023-11-14 09:27:18
  • 在Spring Boot中从类路径加载文件的示例

    2023-11-11 21:53:44
  • C#实现递归调用的Lambda表达式

    2022-10-03 05:13:29
  • SpringBoot如何优雅地处理全局异常详解

    2023-01-06 04:30:19
  • adb通过wifi连接android设备流程解析

    2021-12-27 08:39:37
  • Java常用HASH算法总结【经典实例】

    2023-04-26 00:34:55
  • Androidstudio调用摄像头拍照并保存照片

    2022-01-23 18:33:57
  • java实现超市库存管理系统

    2022-06-28 01:23:44
  • Java Web实现自动登陆功能

    2023-09-06 04:17:53
  • jmeter添加自定函数的实例(jmeter5.3+IntelliJ IDEA)

    2023-04-14 00:20:54
  • Java创建与结束线程代码示例

    2023-01-16 16:20:00
  • Java基于虹软实现人脸识别、人脸比对、活性检测等

    2023-02-18 15:29:09
  • Android 将本地资源图片转换成Drawable,进行设置大小操作

    2023-06-19 17:38:55
  • java实现简单快递系统

    2021-11-28 07:01:57
  • 解决mybatis-generator生成器添加类注释方法无效的问题

    2023-12-05 06:34:57
  • asp之家 软件编程 m.aspxhome.com