我有一个带有WebView的应用程序,显示一个HTML文件.在HTML文件中,有一个按钮,用于请求用户录制视频,或从文档文件夹中选择视频.

在选择(或录制)视频时,它会将带有链接(由Uri编码)的javascript函数调用到视频文件,然后将其设置为元素,方法是将其设置为源:

function showPreview(previewFile){

console.log(previewFile);

document.getElementById('previewVideo').src = previewFile;

}

我遇到了这个错误,我一直在寻找,但似乎无法找到解决方案:

I/chromium﹕ [INFO:CONSOLE(94)] "content://com.android.providers.media.documents/document/video%3A19961",source: file:///android_asset/index.html (94)

W/MediaResourceGetter﹕ permission denied to access network state

W/MediaResourceGetter﹕ non-file URI can't be read due to unsuitable network conditions

E/MediaResourceGetter﹕ Unable to configure Metadata extractor

如您所见,我正在我的javascript函数中记录视频文件的链接,您可以告诉内容链接://com.android.providers.media.documents/document/video:19961.

这就是我在我的代码中加载WebView的方式(当然在XML中有相应的WebView):

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

webView = (WebView) this.findViewById(R.id.webView);

webView.getSettings().setAllowFileAccess(true);

webView.getSettings().setAllowFileAccessFromFileURLs(true);

webView.getSettings().setJavaScriptEnabled(true);

webView.setWebChromeClient(new WebChromeClient());

webView.addJavascriptInterface(new CSJSInterface(getApplicationContext()),"jsInterface");

webView.loadUrl("file:///android_asset/index.html");

}

Javascript接口功能&打回来

@JavascriptInterface

public void showCapture() {

File imageStorageDir = new File(

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),CS_MOVIE_DIRECTORY);

// Create the directory if needed:

if (!imageStorageDir.exists()) {

imageStorageDir.mkdirs();

}

// Create camera captured image file path and name

File file = new File(

imageStorageDir + File.separator + "MOV_"

+ String.valueOf(System.currentTimeMillis())

+ ".mp4");

mCapturedImageURI = Uri.fromFile(file);

// Camera capture image intent

final Intent captureIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);

captureIntent.putExtra(MediaStore.EXTRA_OUTPUT,mCapturedImageURI);

Intent i = new Intent(Intent.ACTION_GET_CONTENT);

i.addCategory(Intent.CATEGORY_OPENABLE);

i.setType("video/*");

// Create file chooser intent

Intent chooserIntent = Intent.createChooser(i,"Video Chooser");

// Set camera intent to file chooser

chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS,new Parcelable[]{captureIntent});

// On select image call onActivityResult method of activity

startActivityForResult(chooserIntent,CAMERA_CAPTURE_RESULT);

}

调用javascript链接已选择/录制的视频文件:

@Override

protected void onActivityResult(int requestCode,int resultCode,Intent data) {

LogUtils.log(LogUtils.DEBUG,"onActivityResult called: " + requestCode + "," + resultCode);

if (requestCode == CAMERA_CAPTURE_RESULT) {

// Test if the WebView is loaded:

if (webView != null) {

LogUtils.log(LogUtils.DEBUG,"Calling javascript to set preview video.");

webView.loadUrl("javascript: showPreview('" + Uri.encode(data.getData().toString()) + "');");

}

}

}

AndroidManifest.xml中

这是我的清单,因为我假设权限可能正在发挥作用

android webview 本地视频播放,javascript – Android WebView不允许加载本地视频文件相关推荐

  1. html js引用本地资源,【基本解决】js加载本地文件

    [背景] 折腾: 期间,可以把问题转换为: 用js,去加载,读取本地的文件. [折腾过程] 1.搜: js load local file js read local file 参考: 试试:func ...

  2. 浏览器加载本地html页面,在浏览器字段中加载本地HTML文件时是否显示白屏?

    我没有完美的答案.如果你看一下at this question,到目前为止,还没有给出关于如何使BrowserField背景透明的答案,这将是一种方式来解决你的问题. 根据您的OTPhelp_en.h ...

  3. Android中WebView加载本地Html,与JavaScript与Android方法相互传值...

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010046908/article/details/51759125 最近在做项目中,要使用High ...

  4. Android中WebView加载本地Html,与JavaScript与Android方法相互传值(续)...

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010046908/article/details/51809558 接着上篇Android中Web ...

  5. Android使用webview控件加载本地html,通过Js与后台Java实现数据的传递

    1.在布局文件中加WebView控件,在java中获取WebView对象. 2.加载本地html文件. webView.loadUrl("file:///android_asset/andr ...

  6. android webView不能加载本地html文件问题

    android中可以加载本地html文件,通过JavaScript进行交互,其中html文件放到assets文件夹下,在调用的时候如下: webView.loadUrl("file:///a ...

  7. Android中使用WebView加载本地html并支持运行JS代码和支持缩放

    场景 Openlayers中使用Image的rotation实现车辆定位导航带转角(判断车辆图片旋转角度): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/art ...

  8. android webView加载网络视频

    之前,我写过webView加载本地网页的博客,今天,就写写webView加载网络视频的内容. 一.加载网页 1.WebView用来显示网页,使用必须时刻注意我们需要添加网络权限 <uses-pe ...

  9. Android中使用WebChromeClient显示Openlayers加载本地GeoJson文件显示地图(跨域问题解决)

    场景 Openlayers中加载GeoJson文件显示地图: Openlayers中加载GeoJson文件显示地图_BADAO_LIUMANG_QIZHI的博客-CSDN博客 上面加载显示GeoJso ...

最新文章

  1. 大数据及Linux安装
  2. layui数据表格自定义复选框表头_解决LayUI数据表格复选框不居中显示的问题
  3. 8G的U盘轻松帮助你安装win7/win8/win10/xp系统
  4. pci中断号分配_西门子S7-200 SMART中断及中断指令概述
  5. 【Keras速成】Keras图像分类从模型自定义到测试
  6. Foundation框架中常用类的介绍
  7. C++总结篇(1)命名空间及引用
  8. (31)FPGA面试技能提升篇(CAN)
  9. 【Spring】Spring Access to DialectResolutionInfo cannot be null when ‘hibernate.dialect‘ not set
  10. A Byte of Python 笔记(2)基本概念:数、字符串、转义符、变量、标识符命名、数据类型、对象...
  11. 历经8年双11流量洗礼,淘宝开放平台架构和技术难点解密
  12. python程序设计与应用_Python程序设计及应用
  13. JQueryUI进度条组件学习笔记
  14. mob做php短信接口,【PHP】短信接口(正则匹配)
  15. C++类内初始值的初始化形式
  16. 考研计算机专业英语面试自我介绍,计算机研究生面试英文自我介绍
  17. commons-codec使用简介
  18. 《用户体验设计:100堂入门课》20190920
  19. 软件著作权申请 源代码编辑
  20. 06-B. DS队列之银行排队

热门文章

  1. matlab mysql建系统_能环水体治理项目(Mysql数据库,Matlab创建GUI界面)【一】
  2. Java的7大设计原则和23种设计模式
  3. Windows7 打开任务计划提示“任务计划程序服务不可用。任务计划程序将尝试重新与其建立连接。”解决办法
  4. 如何使CAD打印PDF显示清楚
  5. 中国制造业的突围 --首次物联网产业系列微访谈圆满结束
  6. 03比对与 bam 文件格式
  7. Photoshop:使用层遮照制作图像渐变特效(2)
  8. 内蒙古电大计算机考试成绩查询成绩查询,2021年网络教育7月统考成绩查询时间及入口...
  9. 使用webots的MPC的移动机器人轨迹跟踪控制
  10. 妹子说头像爬的太慢?升级到多线程程序爬取头像