У меня есть метод, который должен возвращать имя файла и размер файла, возвращенные из contentResolver, на основе выбранного файла URI
, однако время от времени файл, который был выбран, не имеет расширения. Я ищу способ получить полное имя файла с его расширением или способ определить тип файла каким-то образом. Ниже мой метод, который я в настоящее времяПолучение полного имени файла с расширением
//This is the intent which triggers the file choosing
Intent fileIntent = new Intent();
fileIntent.setType("*/*");
fileIntent.setAction(Intent.ACTION_GET_CONTENT);
fileIntent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
startActivityForResult(fileIntent, REQUEST_CODE_FILE);
//Method in onActivityResult
Uri selectedFile = intent.getData();
Cursor cursor = null;
String fileName = null;
int fileSize = 0;
try {
cursor = getContentResolver().query(selectedFile, null, null, null, null);
cursor.moveToFirst();
fileName = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
fileSize = cursor.getInt(cursor.getColumnIndex(OpenableColumns.SIZE));
}catch(Exception ex){
ex.printStackTrace();
}finally {
if(cursor != null) {
cursor.close();
}
}
Я вижу, поэтому, чтобы быть понятным, нет реального способа получить полное имя файла с расширением через 'ContentResolver'? Спасибо за предложение 'getType()'. – kabuto178
@ kabuto178: Пожалуйста, поймите, что 'Uri' может и не быть файлом. То, что вы просите, эквивалентно «как заставить веб-сервер дать мне полное имя файла с расширением для URL?» Ответ заключается в том, что вы не можете, отчасти потому, что URL-адрес может не указывать на файл. Вместо этого это может быть что-то динамически генерируемое. То же самое справедливо и для значений Uri на Android. – CommonsWare
Понятно, что в этом случае я должен быть немного креативным, чтобы сохранить имя и расширение. ура – kabuto178