android - webview 加载包含 .js 的本地 html 文件作为 <script src>

标签 android

我将 .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/

相关文章:

android - CSS 高度在 Android chrome 中搞砸了

c# - 使用C#构建的Android应用在真实设备上崩溃,但可在模拟器上运行

java - 在android中编辑选项菜单项内容/设置

Android-针对不同的屏幕尺寸调整图像

android - 在具有每个 Activity 内容的不同 Activity 上使用导航栏 Activity

android - 向后播放音频

android - 适用于 IOS/Android 应用程序的谷歌云存储下载

java - 在 Windows 上使用 FFMPEG android

android - 如何知道 EditText 中的按键

java - 在android中如何处理Runnable Handler类