首先,我认为你不太可能真的想要从资产中访问HTML和JavaScript文件,因为一旦打包并签署了应用程序,资产就不能(也不应该)更新.这意味着,使用资产中的HTML和JavaScript,您无法更新它们.解决该问题的方法是将HTML和JavaScript保存在内部或外部存储中,并从那里使用它.
其次,如果您使用我刚才解释过的方法,则不能再使用WebView.loadUrl()方法,而是需要使用WebView.loadDataWithBaseUrl()方法.像这样:
webView.loadDataWithBaseURL("http://some_url/", "some_data", "text/html", "utf-8", null);
然后,“some_data”将尝试作为HTML页面加载,如this previous SO answer所示.当它尝试加载JavaScript资源时,如/scripts/lib.js,它将被解析为http:// some_url / scripts / lib .js,WebView将尝试加载该资源.当然它不能,这就是为什么你(在Java中)需要扩展WebViewClient类,并为shouldInterceptRequest(WebView wv,String url)方法提供实现.
当尝试在网页中提取任何资源时,将调用’thehouldInterceptRequest’,并将其返回值用作资源.