Recupero delle informazioni sui file in corso...
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Prima che un'app client tenti di lavorare con un file per il quale ha un URI dei contenuti, l'app può
richiedere informazioni sul file dall'app server, tra cui il tipo di dati e
dimensioni del file. Il tipo di dati consente all'app client di determinare se è in grado di gestire il file,
la dimensione del file consente all'app client di impostare il buffering e la memorizzazione nella cache per il file.
Questa lezione mostra come eseguire query
FileProvider
per recuperare il tipo e le dimensioni MIME di un file.
Recuperare il tipo MIME di un file
Il tipo di dati di un file indica all'app client come deve gestire i contenuti del file. Per ottenere
il tipo di dati di un file condiviso, dato l'URI dei contenuti, l'app client chiama
ContentResolver.getType()
. Questo metodo restituisce
il tipo MIME del file. Per impostazione predefinita,
FileProvider
determina il tipo MIME del file in base alla sua
del nome file.
Il seguente snippet di codice mostra come un'app client recupera una volta il tipo MIME di un file
l'app server ha restituito l'URI dei contenuti al client:
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);
...
Recupera il nome e le dimensioni di un file
La classe FileProvider
ha un'implementazione predefinita
query()
che restituisce il metodo
nome e dimensione del file associato a un URI dei contenuti in un
Cursor
. L'implementazione predefinita restituisce due colonne:
DISPLAY_NAME
-
Il nome del file, indicato come
String
. Questo valore è uguale al valore restituito
entro il giorno File.getName()
.
SIZE
-
La dimensione del file in byte, espressa come
long
. Questo valore corrisponde al valore
restituito da File.length()
L'app client può ricevere sia DISPLAY_NAME
sia SIZE
per un file impostando tutti
degli argomenti di query()
null
tranne l'URI dei contenuti. Ad esempio, questo snippet di codice recupera le
DISPLAY_NAME
e
SIZE
e li mostra in due
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)));
...
Per ulteriori informazioni correlate, consulta:
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-07-27 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-07-27 UTC."],[],[],null,["# Retrieving file information\n\nBefore a client app tries to work with a file for which it has a content URI, the app can\nrequest information about the file from the server app, including the file's data type and\nfile size. The data type helps the client app to determine if it can handle the file, and the\nfile size helps the client app set up buffering and caching for the file.\n\n\nThis lesson demonstrates how to query the server app's\n[FileProvider](/reference/androidx/core/content/FileProvider) to retrieve a file's MIME type and size.\n\nRetrieve a file's MIME type\n---------------------------\n\n\nA file's data type indicates to the client app how it should handle the file's contents. To get\nthe data type of a shared file given its content URI, the client app calls\n[ContentResolver.getType()](/reference/android/content/ContentResolver#getType(android.net.Uri)). This method returns\nthe file's MIME type. By default, a\n[FileProvider](/reference/androidx/core/content/FileProvider) determines the file's MIME type from its\nfilename extension.\n\n\nThe following code snippet demonstrates how a client app retrieves the MIME type of a file once\nthe server app has returned the content URI to the client: \n\n### Kotlin\n\n```kotlin\n ...\n /*\n * Get the file's content URI from the incoming Intent, then\n * get the file's MIME type\n */\n val mimeType: String? = returnIntent.data?.let { returnUri -\u003e\n contentResolver.getType(returnUri)\n }\n ...\n```\n\n### Java\n\n```java\n ...\n /*\n * Get the file's content URI from the incoming Intent, then\n * get the file's MIME type\n */\n Uri returnUri = returnIntent.getData();\n String mimeType = getContentResolver().getType(returnUri);\n ...\n```\n\nRetrieve a file's name and size\n-------------------------------\n\n\nThe [FileProvider](/reference/androidx/core/content/FileProvider) class has a default implementation of the\n[query()](/reference/android/content/ContentProvider#query(android.net.Uri, java.lang.String[], android.os.Bundle, android.os.CancellationSignal)) method that returns the\nname and size of the file associated with a content URI in a\n[Cursor](/reference/android/database/Cursor). The default implementation returns two columns:\n\n[DISPLAY_NAME](/reference/android/provider/OpenableColumns#DISPLAY_NAME)\n:\n The file's name, as a [String](/reference/java/lang/String). This value is the same as the value returned\n by [File.getName()](/reference/java/io/File#getName()).\n\n[SIZE](/reference/android/provider/OpenableColumns#SIZE)\n:\n The size of the file in bytes, as a `long` This value is the same as the value\n returned by [File.length()](/reference/java/io/File#length())\n\n\nThe client app can get both the [DISPLAY_NAME](/reference/android/provider/OpenableColumns#DISPLAY_NAME) and [SIZE](/reference/android/provider/OpenableColumns#SIZE) for a file by setting all\nof the arguments of [query()](/reference/android/content/ContentProvider#query(android.net.Uri, java.lang.String[], android.os.Bundle, android.os.CancellationSignal)) to\n`null` except for the content URI. For example, this code snippet retrieves a file's\n[DISPLAY_NAME](/reference/android/provider/OpenableColumns#DISPLAY_NAME) and\n[SIZE](/reference/android/provider/OpenableColumns#SIZE) and displays each one in separate\n[TextView](/reference/android/widget/TextView): \n\n### Kotlin\n\n```kotlin\n /*\n * Get the file's content URI from the incoming Intent,\n * then query the server app to get the file's display name\n * and size.\n */\n returnIntent.data?.let { returnUri -\u003e\n contentResolver.query(returnUri, null, null, null, null)\n }?.use { cursor -\u003e\n /*\n * Get the column indexes of the data in the Cursor,\n * move to the first row in the Cursor, get the data,\n * and display it.\n */\n val nameIndex = cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)\n val sizeIndex = cursor.getColumnIndex(OpenableColumns.SIZE)\n cursor.moveToFirst()\n findViewById\u003cTextView\u003e(R.id.filename_text).text = cursor.getString(nameIndex)\n findViewById\u003cTextView\u003e(R.id.filesize_text).text = cursor.getLong(sizeIndex).toString()\n ...\n }\n```\n\n### Java\n\n```java\n ...\n /*\n * Get the file's content URI from the incoming Intent,\n * then query the server app to get the file's display name\n * and size.\n */\n Uri returnUri = returnIntent.getData();\n Cursor returnCursor =\n getContentResolver().query(returnUri, null, null, null, null);\n /*\n * Get the column indexes of the data in the Cursor,\n * move to the first row in the Cursor, get the data,\n * and display it.\n */\n int nameIndex = returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);\n int sizeIndex = returnCursor.getColumnIndex(OpenableColumns.SIZE);\n returnCursor.moveToFirst();\n TextView nameView = (TextView) findViewById(R.id.filename_text);\n TextView sizeView = (TextView) findViewById(R.id.filesize_text);\n nameView.setText(returnCursor.getString(nameIndex));\n sizeView.setText(Long.toString(returnCursor.getLong(sizeIndex)));\n ...\n```\n\nFor additional related information, refer to:\n\n- [Retrieving Data from the Provider](/guide/topics/providers/content-provider-basics#SimpleQuery)"]]