本文记录通过代码来在APP中添加一个WebView访问网页的过程,由于没有kotlin基础和android基础,所以费劲周折。首先我们利用AS向导创建一个Empty Activity的APP,然后在onCreate里面修改成如下代码:
1 override fun onCreate(savedInstanceState: Bundle?) { 2 super.onCreate(savedInstanceState) 3 //setContentView(R.layout.activity_main) 4 var web:WebView= WebView(this); 5 setContentView(web); 6 web.loadUrl("https://www.baidu.com") 7 }
别的什么都不动,编译,安装到手机,弹出如下界面:
搜索错误代码得知是Google针对Android P版本以后的应用程序,将要求默认使用加密连接,也就是不允许使用http协议访问,解决办法之一是修改清单文件允许APP使用HTTP协议。
1 <application 2 android:allowBackup="true" 3 android:icon="@mipmap/ic_launcher" 4 android:label="@string/app_name" 5 android:roundIcon="@mipmap/ic_launcher_round" 6 android:supportsRtl="true" 7 android:usesCleartextTraffic="true" //添加本行代码 8 android:theme="@style/AppTheme"> 9 <activity android:name=".MainActivity">
继续编译,安装,运行,出现如下错误提示:
错误原因是APP无权链接网络。解决方法:在AndroidManifest.xml文件中加入联网的权限 <uses-permission android:name="android.permission.INTERNET"></uses-permission>即可
1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.example.usewebview"> 4 <uses-permission android:name="android.permission.INTERNET"/> 为APP添加联网权限 5 <application
再次编译安装运行时出现
网页没有在APP里面打开,而是让选择用其他APP打开。修改代码:
1 override fun onCreate(savedInstanceState: Bundle?) { 2 super.onCreate(savedInstanceState) 3 //setContentView(R.layout.activity_main) 4 var web:WebView= WebView(this); 5 setContentView(web); 6 web.loadUrl("http://www.baidu.com") 7 val webClient = object : WebViewClient() { 8 override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean { 9 return false 10 } 11 } 12 web.webViewClient=webClient;//或者不要上面内容,直接web.webViewClient=WebViewClient() 13 }
编译,运行,OK。这是一个最简单的过程,要是在APP里面正常使用,还需做很多工作。
参考资料:
https://www.iteye.com/blog/bolg-2211950 Android权限标签uses-permission的书写位置
https://www.jianshu.com/p/b266ab3233d0 关于WebView(WebKit)
https://www.jianshu.com/p/24d5d935ad0b Android Webview 基础教程
https://blog.csdn.net/weixin_40438421/article/details/85700109 Android WebView 的使用(超详细用法)
https://www.jianshu.com/p/50afc19de8e5 使用Kotlin写一个简单的WebView例子