Android官方开发文档Training系列课程中文版:分享文件之获取文件信息

简介: 原文地址:http://android.xsoftlab.net/training/secure-file-sharing/retrieve-info.html之前的课程讲述了客户端APP试图与含有文件的URI一同运行,APP可以请求服务端APP的文件信息,包括文件的数据类型以及文件的大小。

原文地址: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)));
目录
相关文章
|
2月前
|
Android开发
安卓SO层开发 -- 编译指定平台的SO文件
安卓SO层开发 -- 编译指定平台的SO文件
31 0
|
1天前
|
存储 Java API
Android系统 文件访问权限笔记
Android系统 文件访问权限笔记
8 1
|
1天前
|
移动开发 Java Unix
Android系统 自动加载自定义JAR文件
Android系统 自动加载自定义JAR文件
8 1
|
1天前
|
Shell Android开发
Android系统 adb shell push/pull 禁止特定文件
Android系统 adb shell push/pull 禁止特定文件
7 1
|
1天前
|
Android开发
Android源代码定制:添加customize.mk文件进行分项目和分客户的定制
Android源代码定制:添加customize.mk文件进行分项目和分客户的定制
2 0
|
1天前
|
测试技术 Android开发
Android App获取不到pkgInfo信息问题原因
Android App获取不到pkgInfo信息问题原因
9 0
|
1月前
|
Java Android开发
Android开发系列全套课程
本系列课程面向有java基础,想进入企业从事android开发的计算机专业者。学习搭配实战案例,高效掌握岗位知识。
18 1
|
2月前
|
JSON Java Go
|
2月前
|
数据库 Android开发 数据库管理
【Android】使用android studio查看内置数据库信息
【Android】使用android studio查看内置数据库信息
72 0
|
2月前
|
算法 Java Android开发
安卓逆向 -- 调用其他APK的SO文件
安卓逆向 -- 调用其他APK的SO文件
17 0