2014-09-06 2 views
0

У меня есть метод, который должен возвращать имя файла и размер файла, возвращенные из 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(); 
     } 
    } 

ответ

1

Я ищу способ, чтобы получить полное имя файла с расширением

OpenableColumns.DISPLAY_NAME не должен быть именем.

или способ определить тип файла

вызова getType() на ContentResolver, поставляя Uri. Это должно вернуть действительный тип MIME для Uri.

+0

Я вижу, поэтому, чтобы быть понятным, нет реального способа получить полное имя файла с расширением через 'ContentResolver'? Спасибо за предложение 'getType()'. – kabuto178

+0

@ kabuto178: Пожалуйста, поймите, что 'Uri' может и не быть файлом. То, что вы просите, эквивалентно «как заставить веб-сервер дать мне полное имя файла с расширением для URL?» Ответ заключается в том, что вы не можете, отчасти потому, что URL-адрес может не указывать на файл. Вместо этого это может быть что-то динамически генерируемое. То же самое справедливо и для значений Uri на Android. – CommonsWare

+0

Понятно, что в этом случае я должен быть немного креативным, чтобы сохранить имя и расширение. ура – kabuto178

Смежные вопросы