Skip to content

Most visited

Recently visited


Retrieving File Information

Before a client app tries to work with a file for which it has a content URI, the app can request information about the file from the server app, including the file's data type and file size. The data type helps the client app to determine if it can handle the file, and the file size helps the client app set up buffering and caching for the file.

This lesson demonstrates how to query the server app's FileProvider to retrieve a file's MIME type and size.

Retrieve a File's MIME Type

A file's data type indicates to the client app how it should handle the file's contents. To get the data type of a shared file given its content URI, the client app calls ContentResolver.getType(). This method returns the file's MIME type. By default, a FileProvider determines the file's MIME type from its filename extension.

The following code snippet demonstrates how a client app retrieves the MIME type of a file once the server app has returned the content URI to the client:

     * 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);

Retrieve a File's Name and Size

The FileProvider class has a default implementation of the query() method that returns the name and size of the file associated with a content URI in a Cursor. The default implementation returns two columns:

The file's name, as a String. This value is the same as the value returned by File.getName().
The size of the file in bytes, as a long This value is the same as the value returned by File.length()

The client app can get both the DISPLAY_NAME and SIZE for a file by setting all of the arguments of query() to null except for the content URI. For example, this code snippet retrieves a file's DISPLAY_NAME and SIZE and displays each one in separate 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);
    TextView nameView = (TextView) findViewById(;
    TextView sizeView = (TextView) findViewById(;
This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields


WeChat에서 Google Developers 팔로우하기

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience. (Dec 2017 Android Platform & Tools Survey)