今天我遇到这么一个问题,就是使用webView时加载不出来网页,这可不成啊,因为我这里有的界面就是必须要使用网页的,必须要使用webView,我着急啊,我就去看源码,一看源码,我懵了,loadUrl这个方法竟然是空方法。
![a42994bd462256b1b5dd81258aa67ba9.png](https://i-blog.csdnimg.cn/blog_migrate/416706ac6a07dcf5b0fd340047a31a08.jpeg)
搞错没有任何实现,这可恼火到我了,我就在网上找解决方案,结果没看到解决方案。只有关于HTTP在api28下面无法使用的问题。
我这时候网上各种找都没有找到,那我该怎么办呢?我就想,能不能替换其源码?我就在网上搜索替代源码的方法,好像也没有看到该怎么去替换,或者说替换的源码不是Android系统的源码,是插件之类的源码,那怎么办呢?尴尬了,我先下载了Android API27的源码,然后到Android SDK目录下面去看其源码,
![005536b480c261bc5027788af3497b7a.png](https://i-blog.csdnimg.cn/blog_migrate/c8dbdcaf8e12dc65c1c3a7c1d399b1a3.jpeg)
使用apk_tool可以看到里面的源码,与AS中看到的API28的源码确实不一样,但是如何将它取出来替换掉呢?这还是难住了我,我看AS中的源码,就在SDK目录下,我始终没有找到其在文件在哪儿,哎,我就看到了SDK目录下面有一个source目录,
![cc4e54217292b3c84e8c241ce9eb3682.png](https://i-blog.csdnimg.cn/blog_migrate/37571acb48b01d53288a3da3b4b170fc.jpeg)
我漫无目的的将它打开,发现里面有好几个文件夹,分别是android-26,android-27,android-28,
![9493e25f2f21ea559a4c01fe4beb73e6.png](https://i-blog.csdnimg.cn/blog_migrate/4d87fdd8ed31bfc911b1a125d9963274.jpeg)
我又点开了android-28,突然发现好像和as中的目录架构是一样的,我找到了它下面的android包下面的webkit包,再一看全是.java文件,我找到了其中的webView.java文件,打开一看,就是源文件,
![4b41de60033fb5241fd95edb625baf4a.png](https://i-blog.csdnimg.cn/blog_migrate/f42d9f402bf35c597974adaa05c313a1.jpeg)
![5a6f945804c23c0d05d997b90ad725e7.png](https://i-blog.csdnimg.cn/blog_migrate/3d1f3e3556f2a16f03053cc3b885bde1.jpeg)
和as中一模一样的。我这时候回过头来打开android-27的android.webkit目录,
![0c3ddbf5fd898dd84486b0c1c58bbd83.png](https://i-blog.csdnimg.cn/blog_migrate/3da58ce030d1cac4e9cef3771732844d.jpeg)
![562ea2a10e444dd34e0a1d0974d803da.png](https://i-blog.csdnimg.cn/blog_migrate/7dca1ffc692f468484eeea88681402fc.jpeg)
将它copy出来,然后将android-28中的webkit包删掉,再把android-27中copy的webkit包全部粘贴到之前android-28中的webkit目录,然后再回过头打开AS发现,as正在同步,一会儿同步好了之后,点开源码目录,发现是新的目录,
![2304ae29f5325d6b0590d50bf5005cd5.png](https://i-blog.csdnimg.cn/blog_migrate/d754a975daa51914a73ce4c7511202d3.jpeg)
也就是说webView已经被替换了,这时候我再重新运行我的项目,哇,运行成功,webView加载出来了。
很多东西都是需要自己去摸索的,像LiveDataBus,LifeCycle这样的,需要api28的sdk运行,而webView在api28的sdk不支持了,这时候使用替换源码的方式就解决掉了,一切的问题都是需要自己想办法解决的,只要能解决问题,那就是好办法。