天天看点

webview加载不出网页_WebView在Android API28源码中loadUrl为空方法的解决办法

今天我遇到这么一个问题,就是使用webView时加载不出来网页,这可不成啊,因为我这里有的界面就是必须要使用网页的,必须要使用webView,我着急啊,我就去看源码,一看源码,我懵了,loadUrl这个方法竟然是空方法。

webview加载不出网页_WebView在Android API28源码中loadUrl为空方法的解决办法

搞错没有任何实现,这可恼火到我了,我就在网上找解决方案,结果没看到解决方案。只有关于HTTP在api28下面无法使用的问题。

我这时候网上各种找都没有找到,那我该怎么办呢?我就想,能不能替换其源码?我就在网上搜索替代源码的方法,好像也没有看到该怎么去替换,或者说替换的源码不是Android系统的源码,是插件之类的源码,那怎么办呢?尴尬了,我先下载了Android API27的源码,然后到Android SDK目录下面去看其源码,

webview加载不出网页_WebView在Android API28源码中loadUrl为空方法的解决办法

使用apk_tool可以看到里面的源码,与AS中看到的API28的源码确实不一样,但是如何将它取出来替换掉呢?这还是难住了我,我看AS中的源码,就在SDK目录下,我始终没有找到其在文件在哪儿,哎,我就看到了SDK目录下面有一个source目录,

webview加载不出网页_WebView在Android API28源码中loadUrl为空方法的解决办法

我漫无目的的将它打开,发现里面有好几个文件夹,分别是android-26,android-27,android-28,

webview加载不出网页_WebView在Android API28源码中loadUrl为空方法的解决办法

我又点开了android-28,突然发现好像和as中的目录架构是一样的,我找到了它下面的android包下面的webkit包,再一看全是.java文件,我找到了其中的webView.java文件,打开一看,就是源文件,

webview加载不出网页_WebView在Android API28源码中loadUrl为空方法的解决办法
webview加载不出网页_WebView在Android API28源码中loadUrl为空方法的解决办法

和as中一模一样的。我这时候回过头来打开android-27的android.webkit目录,

webview加载不出网页_WebView在Android API28源码中loadUrl为空方法的解决办法
webview加载不出网页_WebView在Android API28源码中loadUrl为空方法的解决办法

将它copy出来,然后将android-28中的webkit包删掉,再把android-27中copy的webkit包全部粘贴到之前android-28中的webkit目录,然后再回过头打开AS发现,as正在同步,一会儿同步好了之后,点开源码目录,发现是新的目录,

webview加载不出网页_WebView在Android API28源码中loadUrl为空方法的解决办法

也就是说webView已经被替换了,这时候我再重新运行我的项目,哇,运行成功,webView加载出来了。

很多东西都是需要自己去摸索的,像LiveDataBus,LifeCycle这样的,需要api28的sdk运行,而webView在api28的sdk不支持了,这时候使用替换源码的方式就解决掉了,一切的问题都是需要自己想办法解决的,只要能解决问题,那就是好办法。