我将 .html(由 .js 网络链接组成)文件放在 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");
这里我无法播放.js文件,等待肯定的回应。
最佳答案
首先,我认为您真的不太可能想要从 Assets 中访问 HTML 和 JavaScript 文件,因为 Assets 不能(也不应该)在应用程序完成后更新打包并签名。这意味着,对于 Assets 中的 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)
提供实现方法。
当试图在网页中获取任何资源时,将调用“shouldInterceptRequest”,并将其返回值用作资源。
关于android - webview 加载包含 .js 的本地 html 文件作为 <script src>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9079374/