Android文件共享之检索文件信息_cursor.getcolumnindex(openablecolumns.display_name-程序员宅基地

技术标签: 文件共享  android  Android  

在客户端应用程序尝试使用具有内容URI的文件之前,应用程序可以从服务器应用程序请求有关文件的信息,包括文件的数据类型和文件大小。数据类型帮助客户端应用程序确定它是否可以处理文件,文件大小有助于客户端应用程序为文件设置缓冲和缓存。

本课程演示如何查询服务器应用程序的FileProvider以检索文件的MIME类型和大小。

检索文件的MIME类型

文件的数据类型向客户端应用程序指示它应如何处理文件的内容。要获取共享文件的数据类型给定其内容URI,客户端应用程序调用ContentResolver.getType()。此方法返回文件的MIME类型。默认情况下,FileProvider从文件扩展名确定文件的MIME类型。

以下代码段演示了在服务器应用程序将内容URI返回给客户端后,客户端应用程序如何检索文件的MIME类型:

  ...
    /*
     *从传入的Intent获取文件的内容URI,然后
     *获取文件的MIME类型
     */
    Uri returnUri = returnIntent.getData();
    String mimeType = getContentResolver().getType(returnUri);
    ...

检索文件的名称和大小

FileProvider类具有query()方法的默认实现,该方法返回与光标(Cursor)中的内容URI相关联的文件的名称和大小。默认实现返回两列:

DISPLAY_NAME

  • 文件的名称,String。此值与File.getName()返回的值相同。

SIZE

  • 文件的大小(以字节为单位),long,此值与File.length()返回的值相同。

通过将query()的所有参数设置为null(除了内容URI),客户端应用程序可以获取文件的DISPLAY_NAME和SIZE。例如,此代码段检索文件的DISPLAY_NAME和SIZE,并在单独的TextView中显示每个文件:

 ...
    /*
     * Get the file's content URI from the incoming Intent,
     * then query the server app to get the file's display name
     * and size.
     */
    Uri returnUri = returnIntent.getData();
    Cursor returnCursor =
            getContentResolver().query(returnUri, null, null, null, null);
    /*
     * Get the column indexes of the data in the Cursor,
     * move to the first row in the Cursor, get the data,
     * and display it.
     */
    int nameIndex = returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);
    int sizeIndex = returnCursor.getColumnIndex(OpenableColumns.SIZE);
    returnCursor.moveToFirst();
    TextView nameView = (TextView) findViewById(R.id.filename_text);
    TextView sizeView = (TextView) findViewById(R.id.filesize_text);
    nameView.setText(returnCursor.getString(nameIndex));
    sizeView.setText(Long.toString(returnCursor.getLong(sizeIndex)));
    ...
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jimo_lonely/article/details/53456384

智能推荐

错误: 无效的源发行版:18 :亲测有效_java: 错误: 无效的源发行版:18-程序员宅基地

文章浏览阅读6.6k次,点赞3次,收藏18次。错误: 无效的源发行版:18 :亲测有效_java: 错误: 无效的源发行版:18

软考中项:常考知识点及案例分析要点总结_软考中项案例分析-程序员宅基地

文章浏览阅读5.6k次,点赞7次,收藏60次。前言系统集成项目管理工程师考试(简称软考中项),其中案例分析也是很大一部分考试内容,目前正在学习中,现总结一些可能会考到的知识点供大家参考。1、项目干系人:每个项目的关键干系人除客户和用户外,还包括如下一些人。项目经理:负责管理项目的人。执行组织:指其员工最直接参品顶日工作的单位。项目团队成员:执行项目工作的群体。项目发起人:职能经理:影响者项目管理办公室(Project Management Office, PMO)2、项目建议书项目建议书(又称立项申请)是项目建设单位向上级主_软考中项案例分析

WebRTC--三大线程-程序员宅基地

文章浏览阅读11次。【代码】WebRTC--三大线程。

基于vue.js+element-ui组件开发的博客blog详细步骤_vue.js+element 前端开发教程chm-程序员宅基地

文章浏览阅读431次。vue学习笔记一、前端项目初始化步骤1、通过vue脚手架创建项目2、配置vue路由3、配置element-ui组件库4、配置axios库二、使用步骤1.引入库2.读入数据总结一、前端项目初始化步骤1、通过vue脚手架创建项目通过vue ui命令进行可视化创建项目选择创建的路径 -> 自定义配置项目 -> 安装babel/router/使用配置文件 -> 是否使用history模式的router,不选,默认使用hash模式的routerVue路由的hash模式和history_vue.js+element 前端开发教程chm

kodi没有中文设置_KODI懒人包让你摆脱繁琐的插件安装,迅速成为专业玩家-程序员宅基地

文章浏览阅读1.6k次。在本教程中,我给大家介绍的懒人包都是基于One Nation Portal这个插件来实现的,下边我将列出下载和安装One Nation Portal 的说明。这些说明适用于iOS,Android手机,Mac,Windows以及所有受支持的Kodi设备。在目前来说One Nation Portal是20多个懒人包的集合。它为Kodi 17和Kodi 18 构建。我已经测试并使用了其集合中的多个构建版..._kodi中文包不能安装

分布式事务之——MySQL对XA事务的支持_mysql怎么支持xa事务-程序员宅基地

文章浏览阅读2w次,点赞8次,收藏29次。 MySQL 从5.0.3开始支持XA分布式事务,且只有InnoDB存储引擎支持。MySQL Connector/J 从5.0.0版本之后开始直接提供对XA的支持。 需要注意的是, 在DTP模型中,mysql属于资源管理器(RM)。而一个完整的分布式事务中,一般会存在多个RM,由事务管理器TM来统一进行协调。因此,这里所说的mysql对XA分布式事务的支持,一般指的是单台mysql实例如何执行自己..._mysql怎么支持xa事务

随便推点

开发者们看过来,这场长沙的开发者技术大会正在为你而来~-程序员宅基地

文章浏览阅读235次。开发者们看过来,这场长沙的开发者技术大会正在为你而来~ 看过去,历史的尘埃与沧海桑田古语有云“近代中国,湖南独撑半边天”,湖南长沙,作为湖南省的省会,自古以来便是各界风云人士兴起之地。随着互联网时代的到来,长沙,这座历史悠久的文化名城,不仅仅是中国互联网人才的基地,更是成为已经逐渐成为中南地区具有足够影响力的实力当担,包括芒果视频、映客直播等..._长沙开发者大会

微信APP支付V3(java版本)-程序员宅基地

文章浏览阅读483次,点赞7次,收藏10次。开箱即用,有任何问题可私信

05鸿蒙APP开发之加载网络列表_queryparams 鸿蒙-程序员宅基地

文章浏览阅读1.2k次,点赞20次,收藏25次。为了请求网络列表数据,实现动态加载。官方的DEMO封装得太深,看不出最简化的结构。基于这些原因,开始写下本篇博文,内容主要包含,网络请求封装、发起请求,及页面渲染。_queryparams 鸿蒙

基于asp.net的供销社农产品销售商城系统VUE【毕设源码论文】_农产品交易网站 vue3-程序员宅基地

文章浏览阅读1.1k次,点赞38次,收藏11次。该系统采用了net技术,连接SQL SERVER数据库,具有较高的信息传输速率与较强的数据处理能力。包含管理员和会员两个层级的用户角色,系统管理员可以对系统首页、个人中心、会员管理、产品分类管理、农产品管理、系统管理、订单管理等功能进行详情,修改和删除操作;真正实现了管理工作的无纸化,并且还拥有角色及用户的添加与删除功能,可以很好的供所有用户使用。在对系统进行测试之后,确定可以实现所有预想的功能,并且可移植性强,可以很好的起到供销社农产品展销管理的作用。_农产品交易网站 vue3

CCF-CSP 202203-2 出行计划 差分算法满分题解+解题思路_ccf csp2022032-程序员宅基地

文章浏览阅读9.8k次,点赞44次,收藏85次。CCF-CSP 202203-2 出行计划 差分算分满分题解+解题思路题目链接:202203-2 出行计划70分思路:按照题目要求,直接设置两个数组,记录进入场所的时刻t和单位时间c,即int t[N],c[N];由于需要知道核酸检测结果出来的时刻,则直接设置为l,即int l = q+k;双重循环进行判断,外循环为输入q,内循环遍历数组进入场所的时刻t必须满足:已出检测结果+检测结果未过期70分具体代码如下:#include <iostream>#include <_ccf csp2022032

Android入门第40天-Android中的Service(SimpleStartService)_android service需要注册-程序员宅基地

文章浏览阅读525次。从今天开始,之前39天的Android如果每一篇只有30分钟就能读完和掌握那么从今天开始越往后会越复杂。因为我们的Android教程开始进入“中级”难度了。特别是Service,这个Service我要分成好几章来讲,其重要性足以可见。_android service需要注册