首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

webview选择文件android不工作

是指在Android平台上使用WebView组件时,无法正常实现选择文件的功能。这可能是由于WebView的默认行为不支持文件选择,需要进行特殊处理才能实现该功能。

解决这个问题的方法是通过自定义WebView的WebChromeClient来拦截文件选择请求,并使用Android系统提供的文件选择器来选择文件。具体步骤如下:

  1. 创建一个自定义的WebChromeClient类,并重写其onShowFileChooser方法。该方法会在用户点击选择文件时被调用。
  2. 在onShowFileChooser方法中,创建一个Intent对象,并设置其Action为Intent.ACTION_GET_CONTENT,Type为"image/"或"/*",根据需要选择文件类型。
  3. 调用startActivityForResult方法启动文件选择器,并传入该Intent对象。
  4. 在Activity的onActivityResult方法中,获取选择的文件路径,并将其返回给WebView。

下面是一个示例代码:

代码语言:java
复制
// 创建自定义的WebChromeClient类
private class MyWebChromeClient extends WebChromeClient {
    // 重写onShowFileChooser方法
    @Override
    public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) {
        // 创建Intent对象
        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        intent.setType("*/*");

        // 启动文件选择器
        startActivityForResult(Intent.createChooser(intent, "选择文件"), FILE_CHOOSER_REQUEST_CODE);

        // 将filePathCallback保存起来,在选择文件后再调用
        mFilePathCallback = filePathCallback;

        return true;
    }
}

// 在Activity中的onActivityResult方法中处理选择的文件
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == FILE_CHOOSER_REQUEST_CODE) {
        if (resultCode == RESULT_OK) {
            if (mFilePathCallback != null) {
                Uri[] result = WebChromeClient.FileChooserParams.parseResult(resultCode, data);
                mFilePathCallback.onReceiveValue(result);
                mFilePathCallback = null;
            }
        } else {
            if (mFilePathCallback != null) {
                mFilePathCallback.onReceiveValue(null);
                mFilePathCallback = null;
            }
        }
    }
}

这样,当用户点击选择文件时,会弹出系统的文件选择器,选择文件后,选择的文件路径将会传递给WebView。

推荐的腾讯云相关产品:腾讯云移动浏览器(Tencent X5),它是腾讯云推出的一款基于Chromium内核的浏览器内核,具有更好的兼容性和性能,可用于Android应用中的WebView组件。相关产品介绍链接地址:https://cloud.tencent.com/product/x5

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android WebView实现文件下载功能

原来是因为WebView默认没有开启文件下载的功能,如果要实现文件下载的功能,需要设置WebView的DownloadListener,通过实现自己的DownloadListener来实现文件的下载。...我在项目中的运用 项目要求这样: 1.需要使用WebView加载一个网页; 2.网页中有文件下载的链接,点击后需要下载文件到SDcard; 3.然后自动打开文件; 下面是具体解决办法...webview.loadUrl("file:///android_asset/risktest.html"); webview.loadUrl(jcrs_sub.get(position).addr...()){ // webview.goBack(); // return true; // } return false; } 第二步,起线程开始下载文件。...end.equals("xls")){ // type = "application/vnd.ms-excel"; // } else{ // /*如果无法直接打开,就跳出软件列表给用户选择

3.8K20

Android使用WebView实现文件下载功能

本文实例为大家分享了WebView实现文件下载功能的具体代码,供大家参考,具体内容如下 本节引言 本节给大家介绍的是WebView下载文件的知识点,当我们在使用普通浏览器的时候,比如UC, 当我们点击到一个可供下载链接的时候...,就会进行下载,WebView作为一个浏览器般的组件, 当然也是支持下载,我们可以自己来写下载的流程,设置下载后的文件放哪,以什么文件名 保存,当然也可以调用其它内置的浏览器来进行下载,比如Chrome...1.调用其它浏览器下载文件: 这个很简单,我们只需为WebView设置setDownloadListener,然后重写DownloadListener的 onDownloadStart,然后在里面写个...intent = new Intent(Intent.ACTION_VIEW,uri); startActivity(intent); } }); 如果你手机内存在多个浏览器的话,会打开一个对话框供你选择其中一个浏览器进行下载...-- 在SDCard中创建与删除文件权限 -- <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"

1.4K20

Android WebView 上传文件支持全解析

声明:原文地址:http://blog.isming.me/2015/12/21/android-webview-upload-file/,转载请注明出处。...默认情况下情况下,使用AndroidWebView是不能够支持上传文件的。而这个,也是在我们的前端工程师告知之后才了解的。...因为Android的每个版本WebView的实现有差异,因此需要对不同版本去适配。花了一点时间,参考别人的代码,这个问题已经解决,这里把我踩过的坑分享出来。...在Android 5.0之后,系统提供了onShowFileChooser来让我们实现选择文件的方法,仍然有ValueCallback,在FileChooserParams参数中,同样包括acceptType...处理选择文件 ---- 以上是打开响应的选择文件的界面,我们还需要处理接收到文件之后,传给网页来响应。

61.9K273

使用Xposed强制android WebView开启debug模式使用Xposed强制android WebView开启debug模式Xposed前期工作

使用Xposed强制android WebView开启debug模式 从 https://developer.chrome.com/devtools/docs/remote-debugging 我们可以知道在...android 4.4+可以通过在apk中使用下面的代码开启webview的chrome远程调试 WebView.setWebContentsDebuggingEnabled(true); 但我们开发中接触的...IXposedHookLoadPackage { // handleLoadPackage 会在android加载每一个apk后执行 public void handleLoadPackage(...); } }); } } 上面的代码可以为QQ打开WebView的webContentsDebuggingEnabled Xposed工作原理可以参考文档: https://github.com/rovo89.../xposed 前期工作 1、需要android 4.4+ Root手机 2、安装 Xposed框架 3、已开启QQ WebView的Apk: webviewdebughook.Apk

2.8K20

浅谈关于Android WebView上传文件的解决方案

我们在开发需求的时候,难免会接入一下第三方的H5页面,有些H5页面是具有上传照片的功能,Android 中的 WebView是不能直接打开文件选择弹框的 接下来我讲简单提供一下解决方案,先说一下思路...1.接收WebView打开文件选择器的通知 2.收到通知后,打开文件选择器等待用户选择需要上传的文件 3.在onActivityResult中得到用户选择文件的Uri 4.然后把Uri传递给Html5...这样就完成了一次H5选择文件的过程,下面我把代码贴出来自习看一下 首先,WebView必须要支持JS交互,所以要打开JS交互 mWebView.getSettings().setJavaScriptEnabled...(true); 当H5在调用上传文件的Api的时候,WebView会回调 openFileChooser和onShowFileChooser 方法来通知我们,我们这个时候要做的就是重写这个方法 需要注意的是这个方法在不同的...,我们之后在调用openFileChooser方法来打开文件选择器 private void openImageChooserActivity() { Intent i = new Intent(

3.4K41

android自定义控件之文件选择

之前一直想找一个比较好的文件选择的第三方库,可是看了都不太满意。于是就自己做了一个。像这样的一个小的功能,做起来也不是什么难事。但是要做得好看,还是花了一些时间,但这都是值得的。...列举当前目录下的所有文件,如果是选择目录,则不显示文件,如果是选择文件,则需要显示文件。 ? 新建目录,就是在当前路径下新建目录,同时新建后的目录要能够及时显示在文件列表中。...实现的功能 文件选择 目录选择 可显示隐藏文件 显示上一次打开目录 显示上一级目录 显示当前路径 文件显示大小和修改时间 目录显示子项数量和修改日期 新建目录 难点和细节 1. android6.0以上版本动态权限请求...文件选择 文件选择,可以通过当前路径路径以及列表索引来唯一确定路径;都是,当跳转目录后,索引应该重置。...这里采用WeakReference记录选择的控件,但选择其他目录或者文件时,之前的控件需要重置一下状态。

92020

Android编程使用WebView实现文件下载功能的两种方法

本文实例讲述了Android编程使用WebView实现文件下载功能的两种方法。...分享给大家供大家参考,具体如下: 在应用中,通常会使用到文件下载功能,一般我们都是写一个下载操作工具类,在异步任务中执行下载功能。 今天我们来看下如何使用WebView文件下载功能!..." android:layout_height="match_parent" <WebView android:id="@+id/test_wv" android:layout_width="match_parent...文件下载 public class MainActivity extends Activity { private WebView test_wv; private String downLoadUrl...相关内容感兴趣的读者可查看本站专题:《Android文件操作技巧汇总》、《Android视图View技巧总结》、《Android编程之activity操作技巧总结》、《Android布局layout技巧总结

1K20

【错误记录】Android 分区存储 错误 ( 文件格式匹配 )

文章目录 一、报错信息 二、解决方案 一、报错信息 ---- Android 分区存储 , 将 图片文件 保存到 Movies 目录下报错 : 2021-05-18 14:31:50.691 1341-...11 之后 , 不能使用 File 进行文件操作 , 需要使用 MediaStore 进行文件操作 , MediaStore 的如下内部类 Files , Images , Downloads , Audio..., Video , 负责相应目录的文件操作 , 分别对应外置存储中的 Document , Pictures , Download , Music , Movies 目录 ; 对应格式的文件 , 只能放在特定的目录中...; 文件存储类型限制 : 文件一旦放错位置 , 就会抛异常 ; 专门存储 图片文件 的目录 Pictures , 只能存放图片 , 不能存放其它类型文件 , 专门存储 视频文件 的目录 Movies..., 只能存视频文件 ; 专门存储音频文件的目录 Music , 只能存储音频文件 ; 专门存储文档文件的目录 Document , 只能存储文档相关文件 ; Download 目录可以放置任何类型的文件

1.6K10

Android 无 Root 升级系统 WebView

Android4.4系统开始,Chromium内核取代了Webkit内核,正式地接管了WebView的渲染工作。...从Android7.0系统开始,如果系统安装了Chrome (version>51),那么Chrome将会直接为应用的WebView提供渲染,WebView版本会随着Chrome的更新而更新,用户也可以选择....png 这里原目录下的文件分别有 /webview/webview.apk和/webview/lib/arm/libwebviewchromium.so,直接移动 webview 目录下所有文件到 /...sdcard/backup/ 下: mv /system/app/webview/* /sdcard/backup/ 将准备好的安装包中的 .so 文件提取出来 这里很简单,文件后缀 .apk 直接改成...权限其实就是为了访问和写入系统目录,通过重新挂载就解决了,换了会崩掉的问题其实就是历史遗留问题,从 4.x 过度到 5.0 WebView 独立了,所以包名变了,或者是 ROM 定制方按套路来导致换上去的

18.8K21

用安卓 WebView 做一个“套壳”应用

文中创建的示例项目已上传至码云,点击文章底部“阅读原文”即可获取 正文 本文涉及到复杂的 Android 与 Java 知识,小朋友不需要在家长的陪同下也能观看 ? 1....1.2 选择项目模板 项目模板这里我们选择 「Empty Activity(空白活动)」,点击 「Next(下一步)」。 ?...2.2 在入口处创建 WebView 实例 选择 「app/java/{创建项目时指定的包名}/」 目录下的 「MainActivity.java」 文件(我这里是 app/java/example/webviewdemo...2.3 添加联网权限 选择 「app/minifests/AndroidMinifest.xml」 文件,在 application 标签前添加一个 uses-permission 标签来声明应用的网络访问权限...调试工具栏在窗口右上方,选择或安装一个虚拟机(模拟器)。 ? 点击绿色播放键(三角形),然后 Android Studio 会自动帮我们编译并在虚拟机 ? 中启动我们的应用。

9.2K13

【Web技术】276- WebView缓存原理分析和应用

); 网上很多人都说根据网络条件去选择Cache Mode,当有网络时,设置为LOAD_DEFAULT,当没有网络时设置为LOAD_CACHE_ELSE_NETWORK。...这次由于工作的需要,我特意root了两台手机,一台红米1(Android 4.4)和一台小米4c(Android 5.1),在root高系统版本(6.0和7.1)的两台Nexus都以失败告终之后,我决定还是先看看...Android 5.1的目录:/data/data/包名/cache/org.chromium.android_webview/下面,如下图所示。 ?...工作的原理:当一个设置了manifest文件的html页面被加载时,CACHE MANIFEST指定的文件就会被缓存到浏览器的App Cache目录下面。...最后说一下,其实很多时候,这两类缓存是共同在工作的,当manifest文件没有控制某些资源加载时,例如我上面写的xxx.appcache文件里,NETWORK section下面用的是*号,意思是所有缓存的文件都要去网络加载

1.3K30

开发一个属于自己的app

01、 准备工作 在开发自己app之前,我们要做一下准备工作,搭建一下环境。 1、java运行环境,并配置环境变量。 2、安装Android studio开发者工具。...02、 新建一个app 准备工作做好了,那我们来新建一个空模板app: 在android Studio中新建一个,设置好 Application name和Company domain后,下一步(next...在选择类型的时候选择 empty Activity; 下一步,然后点击完成,成功建立空模板app 03、 修改文件 我们新建好的文件,需要修改部分文件,当然现在已经可以了,但是,我们要让app显示我们自己的喜欢的网站...webview里跳转,不跳到浏览器那边 view.loadUrl(url); return true; } }); } 修改资源文件...将里面原有的TextView标签删掉,然后加入,如图 <WebView android:id="@+id/Toweb" android:layout_width="fill_parent" android

76840

【Unity 实用工具】✨| Unity 十款 浏览器相关插件 整理(web view browser)

); 支持主要交互功能,如:点击,滚动,文本选择,编辑; 实验性虚拟现实支持(Cardboard, Oculus)。...提示: 不能在Unity编辑器模式下工作; 对于arm64位处理器支持,直接在Unity引擎的“TextureWebView/Plugins/Android/libs/arm64-v8a”文件夹中启用库...提示: 开始使用MWV前请阅读用户手册; 当前版本不支持“自动旋转” 不能在Unity编辑器模式下工作 要求最低API等级15 (Android 4.0.3); 播放器设置中正确的工作开关—Internet...,它提供了更好的稳定性,并为 VR 耳机上的鼠标交互提供了更好的支持 总而言之这款Gecko Engine更适合VR设备开发,Android版本更适用于Android移动端开发 关于这两款的对比,可以查看官方给的说明自行选择...,自己开发体验的话还是推荐官网购买,正规项目当然就不用多说啦!

7.5K40
领券