Sebelum aplikasi klien mencoba bekerja dengan file yang memiliki URI konten, aplikasi dapat meminta informasi tentang file dari aplikasi server, termasuk jenis data dan ukuran file. Tipe data membantu aplikasi klien untuk menentukan apakah aplikasi itu dapat menangani file, dan ukuran file membantu aplikasi klien mengatur {i>buffering<i} dan {i>caching <i}untuk file tersebut.
    Pelajaran ini menunjukkan cara melakukan kueri permintaan aplikasi server
    FileProvider untuk mengambil jenis dan ukuran MIME file.
Mengambil jenis file MIME
    Jenis data file menunjukkan kepada aplikasi klien bagaimana konten file harus ditangani. Untuk mendapatkan
    tipe data file bersama berdasarkan URI kontennya, aplikasi klien akan memanggil
    ContentResolver.getType(). Metode ini akan menampilkan
    jenis MIME file. Secara {i>default<i},
    FileProvider menentukan jenis MIME file dari
    ekstensi nama file.
Cuplikan kode berikut menunjukkan cara aplikasi klien mengambil jenis MIME file satu kali aplikasi server telah mengembalikan URI konten ke klien:
Kotlin
... /* * Get the file's content URI from the incoming Intent, then * get the file's MIME type */ val mimeType: String? = returnIntent.data?.let { returnUri -> contentResolver.getType(returnUri) } ...
Java
... /* * 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); ...
Mengambil nama dan ukuran file
    Class FileProvider memiliki implementasi default dari
    Metode query() yang menampilkan
    nama dan ukuran file yang terkait dengan URI konten dalam
    Cursor. Implementasi default menampilkan dua kolom:
- DISPLAY_NAME
- 
        Nama file, sebagai String. Nilai ini sama dengan nilai yang ditampilkan paling lambatFile.getName().
- SIZE
- 
        Ukuran file dalam byte, sebagai long. Nilai ini sama dengan nilai dikembalikan olehFile.length()
    Aplikasi klien bisa mendapatkan DISPLAY_NAME dan SIZE untuk sebuah file dengan menyetel semua
    argumen query() untuk
    null kecuali untuk URI konten. Misalnya, cuplikan kode ini mengambil
    DISPLAY_NAME dan
    SIZE dan menampilkannya secara terpisah
    TextView:
Kotlin
/* * Get the file's content URI from the incoming Intent, * then query the server app to get the file's display name * and size. */ returnIntent.data?.let { returnUri -> contentResolver.query(returnUri, null, null, null, null) }?.use { cursor -> /* * Get the column indexes of the data in the Cursor, * move to the first row in the Cursor, get the data, * and display it. */ val nameIndex = cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME) val sizeIndex = cursor.getColumnIndex(OpenableColumns.SIZE) cursor.moveToFirst() findViewById<TextView>(R.id.filename_text).text = cursor.getString(nameIndex) findViewById<TextView>(R.id.filesize_text).text = cursor.getLong(sizeIndex).toString() ... }
Java
... /* * 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))); ...
Untuk informasi terkait lainnya, lihat:
