本文記錄通過代碼來在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例子

