我将.html(包含.js web链接)文件放在assest中,现在我正在尝试加载url
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setPluginsEnabled(true);
mWebView.getSettings().setAllowFileAccess(true);
mWebView.loadUrl("file:///android_asset/anim1.html");
Run Code Online (Sandbox Code Playgroud)
在这里,我无法播放.js文件,等待积极响应.
首先,我认为你不太可能真的想要从资产中访问HTML和JavaScript文件,因为一旦打包并签署了应用程序,资产就不能(也不应该)更新.这意味着,使用资产中的HTML和JavaScript,您无法更新它们.解决该问题的方法是将HTML和JavaScript保存在内部或外部存储中,并从那里使用它.
其次,如果您使用我刚才解释过的方法,您就不能再使用该WebView.loadUrl()方法,而是需要使用该WebView.loadDataWithBaseUrl()方法.像这样:
webView.loadDataWithBaseURL("http://some_url/", "some_data", "text/html", "utf-8", null);
Run Code Online (Sandbox Code Playgroud)
然后,将尝试将"some_data"作为HTML页面加载,如之前的SO答案所示.当它尝试加载JavaScript资源时,/scripts/lib.js它将被解析为http://some_url/scripts/lib.js,并且WebView将尝试加载该资源.当然它不能,这就是为什么你(在Java中)需要扩展WebViewClient类,并为该shouldInterceptRequest(WebView wv, String url)方法提供实现.
当尝试在网页中提取任何资源时,将调用'thehouldInterceptRequest',并将其返回值用作资源.
| 归档时间: |
|
| 查看次数: |
19925 次 |
| 最近记录: |