原文地址: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系列课程中文版:分享文件之获取文件信息相关推荐

  1. Android官方开发文档Training系列课程中文版:数据存储之文件存储

    原文地址:http://android.xsoftlab.net/training/basics/data-storage/files.html Android使用的文件系统和其它平台的磁碟式文件系统 ...

  2. Android官方开发文档Training系列课程中文版:目录

    原文地址 : http://android.xsoftlab.net/training/index.html 引言 在翻译了一篇安卓的官方文档之后,我觉得应该做一件事情,就是把安卓的整篇训练课程全部翻 ...

  3. Android官方开发文档Training系列课程中文版:创建自定义View之View的创建

    原文地址:http://android.xsoftlab.net/training/custom-views/index.html 引言 Android框架含有大量的View类,这些类用来显示各式各样 ...

  4. Android官方开发文档Training系列课程中文版:OpenGL绘图之图形绘制

    原文地址:http://android.xsoftlab.net/training/graphics/opengl/draw.html 如果你还不清楚如何定义图形及坐标系统,请移步:Android官方 ...

  5. Android官方开发文档Training系列课程中文版:使用Fragment构建动态UI之Fragment创建

    原文地址:http://android.xsoftlab.net/training/basics/fragments/index.html 导言 为了在Android中创建动态的多面板用户界面,你需要 ...

  6. Android官方开发文档Training系列课程中文版:分享文件之配置文件共享

    原文地址:http://android.xsoftlab.net/training/secure-file-sharing/index.html 导言 APP经常需要给其它的APP提供一个或多个文件. ...

  7. Android官方开发文档Training系列课程中文版:分享文件之分享一个文件

    原文地址:http://android.xsoftlab.net/training/secure-file-sharing/share-file.html 一旦APP设置通过URI的方式共享文件,你需 ...

  8. Android官方开发文档Training系列课程中文版:分享简单数据之发送简单数据给其它APP

    原文地址:http://android.xsoftlab.net/training/building-content-sharing.html 引言 Android应用程序有一项伟大的事情就是它们有可 ...

  9. Android官方开发文档Training系列课程中文版:电池续航时间优化之检查与监测坞的状态与类型

    原文地址:http://android.xsoftlab.net/training/monitoring-device-state/docking-monitoring.html Android设备可 ...

最新文章

  1. SAP MM MIGO果真不能用于执行By-product的收货?
  2. hdu 4632 子字符串统计的区间dp
  3. ipad如何连接电脑_ipad如何将电脑文件下载到本地?
  4. Codeforces Round #307 (Div. 2) D. GukiZ and Binary Operations (矩阵高速幂)
  5. 将CRgn rgn对象以图片形式输出便于查看
  6. 活动: 北京Xamarin分享会第4期(2017年7月8日)
  7. tomcat(10)安全性
  8. python做什么方向好_Python工程师的择业方向有哪些?你想好做什么工作了吗?
  9. 射击比赛(java)
  10. 【Leetcode 795】Number of Subarrays with Bounded Maximum
  11. bdm导入mysql_MySQL数据库导入教程
  12. 黑产的类型与武器库概览
  13. 金融期货和期权等品种权限
  14. 计算机专业对未来职业的理想追求,IT行业个人职业生涯规划
  15. python 三维栅状图_基于OpenGL的二维矢量地图可视化技术研究
  16. 【引用】43种名车标志及来历
  17. Python OpenCV3 计算机视觉秘籍:1~5
  18. 【解读】Intel在hot chips上发布首款AI芯片
  19. OnkeyDown事件 和 OnBackPressed方法注意点
  20. 台湾国立大学郭彦甫Matlab教程笔记(6)user define function

热门文章

  1. 字符串2在字符串1中第一次出现的位置strstr()
  2. C语言指针:从底层原理到花式技巧,用图文和代码帮你讲解透彻
  3. 回答一个微信好友的创业问题
  4. Android fb0 截屏实现
  5. mysql中定时任务_mysql中定时任务的用法
  6. cloudstack java api_CloudStack API编程指引
  7. 包与模块管理及面向对象初步
  8. 【Pytorch神经网络理论篇】 32 PNASNet模型:深层可分离卷积+组卷积+空洞卷积
  9. 八、操作系统——基本分页存储管理的基本概念(详解)
  10. LintCode 378. 将二叉树转换成双链表(非递归遍历)