android webview访问本地文件
直接访问file:///是不可以的,webview会因为安全问题拦截掉,官方推荐WebViewAssetLoader
import android.webkit.MimeTypeMap;
import android.webkit.WebResourceResponse;import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.webkit.WebViewAssetLoader;import java.io.FileInputStream;//首先要集成androidx.webkit:webkit:1.4.0
public class SdcardStoragePathHandler implements WebViewAssetLoader.PathHandler {@Nullable@Overridepublic WebResourceResponse handle(@NonNull String filePath) {String extension = MimeTypeMap.getFileExtensionFromUrl(filePath);String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);try {return new WebResourceResponse(mimeType, "UTF-8", new FileInputStream(filePath));} catch (Exception e) {return null;}}
}
webviewClient里拦截即可
webView.webViewClient = object : WebViewClient() {private val webViewAssetLoader = WebViewAssetLoader.Builder().addPathHandler("/sdcard/", SdcardStoragePathHandler()).build()override fun shouldInterceptRequest(webView: WebView?, url: String?): WebResourceResponse? {return url?.let(Uri::parse)?.let(webViewAssetLoader::shouldInterceptRequest) ?: WebViewCacheInterceptorInst.getInstance().interceptRequest(url)}override fun shouldInterceptRequest(webView: WebView?, webResourceRequest: WebResourceRequest?): WebResourceResponse? {return webResourceRequest?.url?.let(webViewAssetLoader::shouldInterceptRequest) ?: WebViewCacheInterceptorInst.getInstance().interceptRequest(webResourceRequest)}
}
demoH5
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body><video controls src="https://appassets.androidplatform.net/sdcard/storage/emulated/0/1658555194419.mp4" width="400" height="200" autoplay></video><img src="https://appassets.androidplatform.net/sdcard/storage/emulated/0/u.jpg"/>
</body>
</html>
附:如果部分安卓板播放视频报错"setDataSource failed status:0x80000000"但是img是正常显示的,则有可能是安卓板webview.apk版本过低有bug引起的,升级webview.apk版本就可以了。
webview.apk下载地址
https://www.apkmirror.com/uploads/?q=android-system-webview
该网址需要特殊访问,诸君自己努力吧!
android webview访问本地文件相关推荐
- android webview打开相册,Android WebView调用本地相册的方法
本文实例为大家分享了Android WebView调用本地相册的具体实现方法,供大家参考,具体内容如下 首先要知道android本身的WebView是并不支持调用手机文件并上传的,其次WebView的 ...
- Android WebView访问SSL证书网页(onReceivedSslError)
Android WebView访问https SSL证书网页,如淘宝,需要在onReceivedSslError添加SSL支持 webview.setWebViewClient(new WebView ...
- Mac上使用nginx访问本地文件夹报403的问题
Mac上使用nginx访问本地文件夹报403的问题 就是没有权限访问你配置的文件夹在 nginx.conf头行加入下面配置 user root wheel; 不过我的电脑在启动nginx访问的时候会发 ...
- 服务器读取本地文件,java远程服务器访问本地文件
java远程服务器访问本地文件 内容精选 换一换 云服务器网络异常.防火墙未放行本地远程桌面端口.云服务器CPU负载过高等场景均可能导致云服务器无法正常登录.本节操作介绍无法登录Linux弹性云服务器 ...
- Android WebView注入js文件,判断当前HTML有没有某个js然后再注入
Android WebView注入js文件,判断当前HTML有没有某个js然后再注入 1.注入js代码 判断当前有没有jQuery文件引入,然后再进行注入. 判断依据其实很简单,获取script 的d ...
- java访问文件服务器,java远程服务器访问本地文件
java远程服务器访问本地文件 内容精选 换一换 云服务器网络异常.防火墙未放行本地远程桌面端口.云服务器CPU负载过高等场景均可能导致云服务器无法正常登录.本节操作介绍无法登录Linux弹性云服务器 ...
- 谷歌浏览器关闭跨域限制,允许跨域请求,设置允许访问本地文件
1. 设置允许访问本地文件 只需要右键谷歌浏览器的快捷方式,查看属性,在目标一栏中空出一格然后加入字符串--allow-file-access-from-files,点击确定即可. 2. 允许跨域请求 ...
- 惨痛的教训,NSURL访问本地文件的问题
今天终于有空调试之前碰到但未解决的一个问题.问题是这样的:使用http将一个视频文件(mp4格式)下载到documents目录下,拿到这个路径,ios4.3sdk下,iphone模拟器上播放失败,提示 ...
- 通过ip访问本地文件spring boot
spring boot通过ip访问本地文件 方案一: 继承WebMvcConfigurerAdapter并重写addResourceHandlers方法(SpringBoot2.0及Spring 5. ...
最新文章
- C++11新特性中的匿名函数Lambda表达式的汇编实现分析(二)
- 如何通过数据包套接字攻击Linux内核
- 和程序员在一起是怎样的体验
- 金笛邮件之邮件倒入专题
- python 如何查看列表的维度?
- 接口测试总结-值得一看哟
- C#项目xxx针对的是.NETFramework,Version=vxxx之解决方案
- Unix网络编程卷1学习总结
- 飞鼠溪·狼(flying squirrel creek)-- BleedingWolves
- PHP 框架集成使用 UEditor 编辑器的方法
- 京瓷打印机m5521cdn_京瓷ECOSYS M5521cdn打印机驱动下载
- 更新华为CCE域名证书方法
- 计算机不显示磁盘阵列,识别不到硬盘?bios中怎么改raid为ahci硬盘模式。
- 【游戏逆向】浅谈某平台调试软件检测分析
- L1 正则化和L2正则化
- IDA + GDBServer实现iPhone程序远程调试
- 网络:分布式和网络的区别
- 教你玩转自己的机械键盘
- 有源医疗器械的开发过程和各阶段的注意事项(三)
- 导数法判断函数的单调性的策略【中阶和高阶辅导】
热门文章
- 车道线检测-从单车道到多车道的车道线检测(三)
- JAVA日期类的格式转换
- 2Kx4位的存储芯片组成16Kx8位的存储器,具体看详细~
- 优思学院|抽样检验的意义是什么?
- 第四周 Java语法总结_内部类_常用类_getclass_toStrong_equals_clone_Scanner_String_StringBuffer_Integer_集合_插入排序
- 使用 dataset 管理数据
- “让专业的人做专业的事”,畅捷通与阿里云的云原生故事
- 计算机应用飞机自动驾驶,计算机应用技术论文自动驾驶空中失效的影响分析与决策...
- 学习 Scss? 看这篇就够了
- 2016 海选创业项目