android - 带离线页面的 WebView (HTML5)

标签 android html android-webview chromium

我正在尝试使用 WebView 向离线用户显示交互式 HTML5 页面。下载并解压缩必要的内容并使用 web.loadUrl("file:///"+ uri.toString()); 启动 WebView 虽然大部分内容都有效,但没有音频和 LogCat 告诉我以下:

03-02 17:58:58.082  12066-12205/- D/MediaResourceGetter﹕ canonicalized file path: /data/data/${package.name}/cache/684.unpacked/story_content/video_6kjafYSyahO_30_48_370x208.mp4   
03-02 17:58:58.083  12066-12205/- E/MediaResourceGetter﹕ Refusing to read from unsafe file location.`  
03-02 17:58:58.083  12066-12205/- E/MediaResourceGetter﹕ Unable to configure metadata extractor

我选择缓存目录是因为根据 MediaResourceGetter 的来源,这应该是一个安全的位置。
这就是我配置 WebView 的方式:

WebSettings s = web.getSettings();  
s.setBuiltInZoomControls(true);  
s.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);  
s.setUseWideViewPort(true);  
s.setLoadWithOverviewMode(true);  
s.setSavePassword(true);  
s.setSaveFormData(true);  
s.setJavaScriptEnabled(true);  

s.setGeolocationEnabled(true);  
s.setGeolocationDatabasePath("/data/data/" + getPackageName() +  "/geoloc/");  

s.setDomStorageEnabled(true);  

s.setJavaScriptEnabled(true);  
s.setPluginState(WebSettings.PluginState.ON);  
s.setAllowFileAccess(true);  
s.setAllowContentAccess(true);  
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {  
  s.setAllowFileAccessFromFileURLs(true);  
  s.setAllowUniversalAccessFromFileURLs(true);  
}  

最佳答案

基于 source code getRawAcceptableDirectories 方法,WebView 应该允许从应用程序缓存目录和 sdcard 目录读取文件。

关于android - 带离线页面的 WebView (HTML5),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28815670/

相关文章:

javascript - 如何使用 html 和 javascript 创建音频播放器

javascript - document.getElementsByName 在 android 的 webview 中的某些网站中不起作用

javascript - HTML5 视频不会在 Amazon WebView 中自动启动

android - 模块和组件范围之间的区别

android - 使用为 android 编译的 LibVLC 显示来自 MPEG2 流的 DVB 字幕

javascript - 在 onClick 事件之前设置输入值

php - 在表单上打印错误消息

android - 无法创建线程中的 WebView

android - 从 iOS 应用调用时, native Web RTC 视频通话在 Android 上卡住

android - 未找到 ID 为 'com.android.application' 的插件