Android官方开发文档Training系列课程中文版:分享文件之获取文件信息
原文地址:http://android.xsoftlab.net/training/secure-file-sharing/retrieve-info.html
之前的课程讲述了客户端APP试图与含有文件的URI一同运行,APP可以请求服务端APP的文件信息,包括文件的数据类型以及文件的大小。这些数据类型可以帮助客户端APP来判断该文件是否可以处理,文件的大小可以帮助客户端APP对该文件设置相应大小的缓冲区。
这节课演示了如何查询服务端APP返回文件的MIME类型以及大小。
获取文件的MIME类型
一个文件的数据类型指示了客户端APP应该如何处理这个文件的内容。为了获取URI对应文件的数据类型,客户端APP需要调用方法ContentResolver.getType()。这个方法返回了文件的MIME类型。默认情况下,FileProvider可以从文件的扩展名来判断文件的MIME类型。
下面这段代码演示了客户端APP如何解析服务端APP返回的URI对应文件的MIME类型:
.../** Get the file's content URI from the incoming Intent, then* get the file's MIME type*/Uri returnUri = returnIntent.getData();String mimeType = getContentResolver().getType(returnUri);...
获取文件的名称与大小
FileProvider类有一个query()方法的默认实现,该方法可以返回URI相关文件的名称与大小,不过结果位于一个Cursor对象中。默认的实现会返回两列:
DISPLAY_NAME
- 这是文件的名称,是字符串类型。这个值与File.getName()方法返回的值相等。
SIZE
- 这是文件的大小,以字节形式呈现,是long类型。这个值与File.length()方法返回的值相等。
客户端APP可以通过对query()方法设置null参数的方式来获得文件的名称与大小,当然URI参数除外。举个例子,下面这段代码获取了一个文件的名称与大小,并且在单独的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)));
Android官方开发文档Training系列课程中文版:分享文件之获取文件信息相关推荐
- Android官方开发文档Training系列课程中文版:数据存储之文件存储
原文地址:http://android.xsoftlab.net/training/basics/data-storage/files.html Android使用的文件系统和其它平台的磁碟式文件系统 ...
- Android官方开发文档Training系列课程中文版:目录
原文地址 : http://android.xsoftlab.net/training/index.html 引言 在翻译了一篇安卓的官方文档之后,我觉得应该做一件事情,就是把安卓的整篇训练课程全部翻 ...
- Android官方开发文档Training系列课程中文版:创建自定义View之View的创建
原文地址:http://android.xsoftlab.net/training/custom-views/index.html 引言 Android框架含有大量的View类,这些类用来显示各式各样 ...
- Android官方开发文档Training系列课程中文版:OpenGL绘图之图形绘制
原文地址:http://android.xsoftlab.net/training/graphics/opengl/draw.html 如果你还不清楚如何定义图形及坐标系统,请移步:Android官方 ...
- Android官方开发文档Training系列课程中文版:使用Fragment构建动态UI之Fragment创建
原文地址:http://android.xsoftlab.net/training/basics/fragments/index.html 导言 为了在Android中创建动态的多面板用户界面,你需要 ...
- Android官方开发文档Training系列课程中文版:分享文件之配置文件共享
原文地址:http://android.xsoftlab.net/training/secure-file-sharing/index.html 导言 APP经常需要给其它的APP提供一个或多个文件. ...
- Android官方开发文档Training系列课程中文版:分享文件之分享一个文件
原文地址:http://android.xsoftlab.net/training/secure-file-sharing/share-file.html 一旦APP设置通过URI的方式共享文件,你需 ...
- Android官方开发文档Training系列课程中文版:分享简单数据之发送简单数据给其它APP
原文地址:http://android.xsoftlab.net/training/building-content-sharing.html 引言 Android应用程序有一项伟大的事情就是它们有可 ...
- Android官方开发文档Training系列课程中文版:电池续航时间优化之检查与监测坞的状态与类型
原文地址:http://android.xsoftlab.net/training/monitoring-device-state/docking-monitoring.html Android设备可 ...
最新文章
- SAP MM MIGO果真不能用于执行By-product的收货?
- hdu 4632 子字符串统计的区间dp
- ipad如何连接电脑_ipad如何将电脑文件下载到本地?
- Codeforces Round #307 (Div. 2) D. GukiZ and Binary Operations (矩阵高速幂)
- 将CRgn rgn对象以图片形式输出便于查看
- 活动: 北京Xamarin分享会第4期(2017年7月8日)
- tomcat(10)安全性
- python做什么方向好_Python工程师的择业方向有哪些?你想好做什么工作了吗?
- 射击比赛(java)
- 【Leetcode 795】Number of Subarrays with Bounded Maximum
- bdm导入mysql_MySQL数据库导入教程
- 黑产的类型与武器库概览
- 金融期货和期权等品种权限
- 计算机专业对未来职业的理想追求,IT行业个人职业生涯规划
- python 三维栅状图_基于OpenGL的二维矢量地图可视化技术研究
- 【引用】43种名车标志及来历
- Python OpenCV3 计算机视觉秘籍:1~5
- 【解读】Intel在hot chips上发布首款AI芯片
- OnkeyDown事件 和 OnBackPressed方法注意点
- 台湾国立大学郭彦甫Matlab教程笔记(6)user define function
热门文章
- 字符串2在字符串1中第一次出现的位置strstr()
- C语言指针:从底层原理到花式技巧,用图文和代码帮你讲解透彻
- 回答一个微信好友的创业问题
- Android fb0 截屏实现
- mysql中定时任务_mysql中定时任务的用法
- cloudstack java api_CloudStack API编程指引
- 包与模块管理及面向对象初步
- 【Pytorch神经网络理论篇】 32 PNASNet模型:深层可分离卷积+组卷积+空洞卷积
- 八、操作系统——基本分页存储管理的基本概念(详解)
- LintCode 378. 将二叉树转换成双链表(非递归遍历)