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

如何在通过文件浏览器选择文件后在onActivityResult()中使用getContentResolver().query()获取文件路径

在通过文件浏览器选择文件后,在onActivityResult()中使用getContentResolver().query()获取文件路径的步骤如下:

  1. 首先,在你的Activity中,你需要重写onActivityResult()方法来处理文件选择的结果。在该方法中,你可以通过requestCode来判断是哪个操作返回的结果。
  2. 在文件选择的操作中,你需要使用Intent来启动文件浏览器,并设置相关的参数,如文件类型、选择模式等。例如,可以使用以下代码启动文件浏览器:
代码语言:txt
复制
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");  // 设置文件类型为任意类型
intent.addCategory(Intent.CATEGORY_OPENABLE);  // 设置可打开的文件
startActivityForResult(intent, REQUEST_CODE_FILE_CHOOSER);
  1. 当用户选择完文件后,系统会回调onActivityResult()方法。你可以在该方法中获取选择的文件路径。首先,你需要判断requestCode是否匹配文件选择操作的请求码,然后获取选择的文件的Uri。例如:
代码语言:txt
复制
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    
    if (requestCode == REQUEST_CODE_FILE_CHOOSER && resultCode == RESULT_OK) {
        Uri fileUri = data.getData();
        String filePath = getFileFromUri(fileUri);
        
        // 使用filePath进行后续操作
    }
}
  1. 接下来,你需要将获取到的文件Uri转换为文件路径。可以通过getContentResolver().query()方法来获取文件路径。例如:
代码语言:txt
复制
private String getFileFromUri(Uri uri) {
    String filePath = null;
    String[] projection = {MediaStore.Images.Media.DATA};
    Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
    
    if (cursor != null && cursor.moveToFirst()) {
        int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        filePath = cursor.getString(columnIndex);
        cursor.close();
    }
    
    return filePath;
}
  1. 最后,你可以使用获取到的文件路径进行后续操作,如文件上传、文件处理等。

需要注意的是,上述代码中使用了Android的MediaStore来获取文件路径,因此只适用于选择媒体文件(如图片、音频、视频等)。如果需要选择其他类型的文件,可以根据具体需求修改Intent的setType()方法和查询的projection参数。

推荐的腾讯云相关产品:腾讯云对象存储(COS),它是一种安全、低成本、高可靠的云端存储服务,适用于存储和处理各种类型的文件。你可以通过以下链接了解更多信息:腾讯云对象存储(COS)

相关搜索:如何在从文件存储中选择文件后从文件选择器中获取文件路径使用文件浏览器选择文件并将路径存储在python脚本中选择文件后自动在输入中获取文件名如何通过路径在QTreeView中为QFileSystemModel选择文件?在Tkinter中获取文件名并在选择后显示它如何在登录后使用python在web浏览器中打开html文件?如何在Scrapy中使用file Pipeline获取下载后的文件路径?如何在Angularjs中获取从pc中选择的图像的文件路径不使用FileManagement.OpenFolderDialog在Dynamics NAV中获取文件的文件夹路径android:如何在sdcard中获取存储在文件夹中的文件的完整路径?如何在主动选择参数Jenkins中通过SSH从远程系统获取文件Blob音频文件在使用getUserMedia在浏览器中录制后损坏如何使用node js通过url在浏览器中呈现日志文件?使用意图传递文件的路径,但是如何在另一个活动中获取每个文件的路径呢?如何在使用JavaScript的文件路径中的下划线后捕获所有内容?在使用python拉取某个文件后,如何从Google云存储存储桶中获取文件?如何在创建扩展时在VS代码中获取当前活动文件的确切路径db连接文件是另一个文件,查询在另一个文件中。如何在其中使用mysqli_query()可以使用webkitdotnet在C#中通过WebKit浏览器下载文件吗?如何在从附件中获取图像作为Arraybuffer后使用Axios将其作为文件发布
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

android之实现打开相册、拍照录像、播放视频、保存图片到系统相册指定位置、图片压缩

自Android 7.0系统禁止应用向外部公开file://URI , * 因此需要FileProvider来向外界传递URI,传递的形式是content : //Uri,使用时需要在清单文件中注册。...下面创建一个xml文件夹,xml下面建立file_paths.xml文件,这个文件的主要作用是向外提供content://uri路径。...照片"+resultCode+data+requestCode); if (resultCode == Activity.RESULT_OK) { 方式一:自定义路径获取图片 img_show.setImageURI...插入图库的方法图片并没有立刻显示图库,而我们需要立刻更新系统图库以便让用户可以立刻查看到这张图片。...//Uri uri = data.getData(); //Cursor cursor =getActivity().getContentResolver().query(uri, null, null

5.4K20
  • 1--安卓多媒体之图片综合篇

    零、前言 本篇将涉及: 1.调用系统相机、上传到服务器操作 2.大照片通过采样并压缩尺寸避免OOM 3.media图片的内容提供者使用方法,增删改查,获取手机所有图片路径 4.显示最近100...张照片 5.通过系统图库选择一张加载到界面 ---- 实验一:拍一张图片上传到服务器: 1.打开系统系统相机 // 注:Cons.CAMERA_RESULT = 1 startActivityForResult...data); if (resultCode == RESULT_OK) { //通过intent获取Bundle的"data"键的数据(即Bitmap) Bitmap...传说中的OOM.png 1.采样适量缩小,解决OOM:思路 1)创建Options对象op,对Bitmap做配置 2)只获取Bitmap信息,不分配内存:op.inJustDecodeBounds...,方法耗时:1.289秒,属于耗时操作应该放在子线程 可以获取数据库的字段,封装一个图片的实体类,以便使用 private ArrayList queryAllImg() {

    58520

    【OkHttp】OkHttp 上传图片 ( 获取 SD 卡动态权限 | 跳转到相册界面选择图片 | 使用 OkHttp 上传图片文件 )

    SD 卡动态权限 | 跳转到相册界面选择图片 | 使用 OkHttp 上传图片文件 ) ---- 文章目录 OkHttp 系列文章目录 前言 一、获取 SD 卡动态权限 二、跳转到相册界面 三、选择完相册图片回到本界面...一、获取 SD 卡动态权限 ---- 清单文件 , 注册如下权限 ; <uses-permission android:name="android.permission.INTERNET"...Uri 对应图片的文件路径 ; 文件路径所在的字段是 MediaStore.Images.Media.DATA 字段 , 列明为 _data ; // 要查询的列字段名称 String[] filePathColumns...; // 获取图片的存储路径 String filePath = cursor.getString(columnIndex); // 获取数据完毕, 关闭游标 cursor.close(); ④...最后 , 使用 OkHttp 上传获取的图片对应的文件路径 ; 完整代码示例 : /** * 相册中选择图片返回 * @param requestCode * @

    2.3K30

    ContentProvider再探——Document Provider

    概述 通过ContentProvider初探相信你已经知道如何去使用系统提供的ContentProvider或者自定义ContentProvider了, 已经基本满足日常开发的需求了,有趣的是,我官方文档上看到了另外这几个...一个document provider 是以传统的文件目录树组织起来的: ?...简单点说就是:客户端发送了上面两种Action的Intent,会打开Picker UI,在这里会显示相关可用的 Document Provider,供用户选择,用户选择可以获得文件的相关信息!...()获取被创建文件的uri 删除文件: 前提是Document.COLUMN_FLAGS包含SUPPORTS_DELETE DocumentsContract.deleteDocument(getContentResolver...如果是以前的版本:uri可能是这样的: content://media/external/images/media/image%3A69983 别人总结的Android4.4获取资源路径问题 public

    94830

    Android Intent漏洞

    例如,如果你应用构建一个名为DownloadService的服务,用于从Web下载文件,可以使用以下代码启动: // Executed in an Activity, so 'this' is...例如,如需地图上向用户显示位置,则可以使用隐式 Intent,请求另一具有此功能的应用共享内容 例如,如果希望与其他人共享的内容,可以使用 ACTION_SEND 操作创建 Intent,并添加指定要共享的内容...onActivityResult(),基于onActivityResulty()具体的实现产生具体攻击。...用于获取用户选择文件(文档、图象、视频)的URI,并在应用中进行处理(例如,将文件发送到服务器),大多Android/Java无法将Android ContentResolver返回的InputSteam...所以应用在处理文件之前会把URI缓存到文件。这可能导致读取/写入任意文件

    59330

    Android 使用腾讯X5内核, Webview浏览器拍照或从相册上传图片

    最近在项目开发,需要使用WebView上传文件。默认情况下情况下,使用Android的WebView是不能够支持上传文件的。...Android 5.0之后,系统提供了onShowFileChooser来让我们实现选择文件的方法,仍然有ValueCallback,FileChooserParams参数,同样包括acceptType...处理选择文件 因为我们前面是使用startActivityForResult来打开的选择页面,我们会在onActivityResult接收到选择的结果。...2 选择文件使用系统提供的组件或者其他支持的app,返回的uri有的直接是文件的url,有的是contentprovider的uri,因此我们需要统一处理一下,转成文件的uri,可参考以下代码(获取文件路径...下面我们将介绍怎么通过使用腾讯X5 Webview浏览器实现拍照或从相册上传图片功能。

    2.1K30

    手机打开照相机_安卓11调用第三方相机

    intent中提供一系列的putExtra()方法的重载,可以把想要传递的数据暂存在intent, 当另一个活动启动,再把这些数据从intent缓存取出即可。...相机拍摄到的图片会直接存储到相应路径,不会缓存在内存。...intent.setType(“audio/*”); //选择音频 intent.setType(“video/*”); //选择视频 //这是正常的访问系统自带的文件管理器。...(java,对象的首地址是它在内存存放的起始地址,它后面的地址是用来存放它所包含的各个属性的地址,所以内存中会用多个内存块来存放对象的各个参数, 而通过这个首地址就可以找到该对象,进而可以找到该对象的各个属性...Uri 和 selection 来获取真实的图片路径 Cursor cursor = getContentResolver().query(uri, null, selection, null, null

    1.3K20

    Android WebView 上传文件支持全解析

    主要思路是重写WebChromeClient,然后WebViewActivity接收选择到的文件Uri,传给页面去上传就可以了。...return true; } } 上面openFileChooser是系统未暴露的接口,因此不需要加Override的注解,同时不同版本有不同的参数,其中的参数,第一个ValueCallback用于我们选择文件...Android 5.0之后,系统提供了onShowFileChooser来让我们实现选择文件的方法,仍然有ValueCallback,FileChooserParams参数,同样包括acceptType...因为我们前面是使用startActivityForResult来打开的选择页面,我们会在onActivityResult接收到选择的结果。...选择文件使用系统提供的组件或者其他支持的app,返回的uri有的直接是文件的url,有的是contentprovider的uri,因此我们需要统一处理一下,转成文件的uri,可参考以下代码(获取文件路径

    63.1K273

    相机和相册选取图片并剪裁

    图片的选择 这两天做头像模块的时候,使用到了相册,相机,剪裁,自定义圆形图片;这里做个总结吧 这里关于权限的处理 之前已经做过总结了,就不再写了 https://sky-mxc.github.io/2016.../10/08/permission 相册选取 相机选取 剪裁 自定义圆形图片 相册选取 图库选取之后获得的是这个图片的路径, 我的实现方法是通过ContentResovler来获取路径,存储文件夹里,...存储并启动剪裁 ,存储文件的代码就不贴了,都是那一套 String projection = MediaStore.Images.Media.DATA; Cursor cursor = getContentResolver...传入一个文件uri(和刚才相册临时存储的文件路径一致,方便使用),拍照完毕,直接去读取该图片 并执行剪裁 /** * 执行拍照 */ private void invokeCamera() {...",true); intent.putExtra("noFaceDetection",true); startActivityForResult(intent,ZOOM); } 剪裁获取

    77360

    android调用相册和摄像头_网页调用摄像头拍照

    final static int CAMERA_REQUEST_CODE = 0; // 相册选择回传吗 public final static int GALLERY_REQUEST_CODE...= 1; 若多个地方使用了这个拍照功能 可以放在公共类,设置为全局变量 3 相应的java类: // 拍照的照片的存储位置 private String mTempPhotoPath....getPackageName() +".my.provider", new File(mTempPhotoPath)); //下面这句指定调用相机拍照的照片存储的路径...imageUri)); fragment4ImageView0.setImageBitmap(bit); 解决: 先检查右边,是否为空的 还是不行 检查左边 是否有findViewById 如果是onActivityResult...设置的setImage 即使onCreatefindView 了也是不行的 要在onActivityResultfindView 问题2: 拍照 Android N 版本遇到的问题: android.os.FileUriExposedException

    75220

    简单说说Android如何使用摄像头和相册

    Android6.0+ 开始,读取存放在 SD 卡的任何其它目录都被列为危险权限,因此需要设定运行时权限才可以操作,这里使用了与应用关联的目录,所以就可以跳过这一步。...从 android 7.0+ 系统开始,直接使用本地真实的路径被认为是不安全的,会抛出一个 FileExposedException 异常,而 FileProvider 是一种特殊的内容提供器,它使用与内容提供器类似的机制对数据进行保护...="@xml/file_paths" / </provider android:authorities 就是我们 FileProvider.getUriForFile() 方法传入的第二个参数。...使用 <meta-data 指定了 Uri 的共享路径,在此引用了 xml 资源。 IDEA 可以通过快捷键 ctrl + enter 直接在 xml 文件夹下创建文件: ?...选取照片的效果: ? 以上就是本文的全部内容,希望对大家的学习有所帮助。

    90520
    领券