webview上传图片,

  webview上传图片,

  一、需要实现的功能:

  用H5实现的应用中需要在H5获取手机中的照片或者视频文件上传到服务器。

  二、分析实现方法:

  由于不懂前端开发,不知道H5中有输入文件之类的标签控件,可以用来选择文件,刚开始的思路还是想着当地的端是否要通过提供输入流流方式,将文件内容传递给JS。后来和前端沟通之后,H5在电脑端都是用投入设置类型为文件来实现文件选择功能,于是才开始搜索资料,发现时需要在网络视图中设置setWebChromeClient,其中有对投入的响应回调:

  三、具体实现:

  前端代码

  input type= file accept= */* name= choose file input type= file accept= image/* name= choose image input type= file accept= video/* name= choose video input type= file accept= image/example name= take photo and upload image input type= file accept= video/example name= take video and upload video native端代码:

  @RequiresApi(api=Build .版本代码LOLLIPOP)@ override public boolean on show file chooser(WebView WebView,ValueCallbackUri[]filepath回调,WebChromeClient .file chooser params file chooser params){ mfilepath callbacks=file path callback;//TODO:根据标签中得接收类型,启动对应的文件类型选择器string[]accept types=文件选择器参数。getaccepttypes();for(字符串类型:接受类型){ log。d(标记,接受类型=类型);} //针对拍照后马上进入上传状态处理if((接受类型。长度0)接受类型[0].等于( image/example ){ log。d(标签, on show file chooser take photo );intent it=相机功能。拍照(m上下文);startActivityForResult(it,TAKE _ PHOTO _ AND _ UPLOAD _ REQUEST);返回true} //针对录像后马上进入上传状态处理if((接受类型。长度0)接受类型[0].等于(视频/示例){ log。d(标签,在显示文件选择器记录视频);intent it=相机功能。录制视频(m上下文);startActivityForResult(it,RECORD _ VIDEO _ AND _ UPLOAD _ REQUEST);返回真实}意向意图=新意向(意图.ACTION _ GET _ CONTENT);intent.addCategory(Intent .类别_可打开);if(接受类型。长度0){ if(接受类型[0].包含( image ){ intent。settype( image/*);} else if (acceptTypes[0].包含(视频){ intent。settype( video/*);} else { intent。settype( */* );} } else { intent。settype( */* );} webview活动。这个。startactivityforresult(intent。创建选择器(意图文件选择器)、REQUEST _ File _ PICKER);返回真实}回调设置上呼吸道感染

  /** * 设置投入标签出发的回调选择文件路径,优先使用小路参数, * 其次使用上呼吸道感染参数* @ param Uri param * @ param path param */private void setFilePathCallback(Uri Uri param,String pathParam) { //都为空,则设置null if(uri param==null path param==null){ if(mFilePathCallback!=null){ mfilepathcallback。onreceivevalue(null);} if (mFilePathCallbacks!=null){ mfilepath回调。onreceivevalue(null);} } else if (null!=pathParam) { //优先使用路径if (mFilePathCallback!=null){ Uri Uri=Uri。from File(新文件(路径参数));mfilepathcallback。onreceivevalue(uri);} if (mFilePathCallbacks!=null){ Uri Uri=Uri。from File(新文件(路径参数));mfilepathcallbacks。onreceivevalue(新Uri[]{ Uri });} } else if (null!=uriParam) { //其次使用uri if (mFilePathCallback!=null){ String path=uri utils。getpath(getApplicationContext()、uri param);Uri uri=Uri.fromFile(新文件(路径));mfilepathcallback。onreceivevalue(uri);} if (mFilePathCallbacks!=null){ String path=uri utils。getpath(getApplicationContext()、uri param);Uri uri=Uri.fromFile(新文件(路径));mfilepathcallbacks。onreceivevalue(新Uri[]{ Uri });} } mFilePathCallback=null mfilepathcallbacks=null }针对各个请求场景进行处理:

  活动结果上的公共void(int request code,int resultCode,Intent intent) {总结:既然用H5开发APP,就需要了解前端,不懂就要问了。查询方向要对,否则南辕北辙,方向有时候比努力重要!

  到此这篇关于关于网络视图适配H5上传照片或者视频文件的方法的文章就介绍到这了,更多相关网络视图适配H5上传照片内容请搜索以前的文章或继续浏览下面的相关文章,希望大家以后多多支持!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: