2013-03-23 3 views
6

Первый контекст того, чего я пытаюсь достичь -Определить тип Mime uri в android, возвращенный намерением?

Я разрабатываю приложение для совместного использования изображений, для которого мне нужен пользователь, чтобы выбрать изображение из файловой системы.

Для этого я использую этот код -

Intent photoPickerIntent = new Intent(Intent.ACTION_GET_CONTENT); 
    photoPickerIntent.setType("image/*"); 
    startActivityForResult(photoPickerIntent, REQUEST_CODE_IMAGE_PICKER_INTENT); 

Теперь это запускающее Chooser, в котором я вижу несколько вариантов, включая галереи и FileManager приложение, которое у меня есть в моем телефоне. Если я выбираю галерею и выбираю изображение, то моя активность получает намерение с содержанием uri изображения. Но если я выбираю приложение FileManager, я могу выбрать любой файл, который может быть не образ. Итак, мне нужно, чтобы определить тип mime uri, возвращенный в намерении. Метод getType в намерении возвращает значение null.

Есть ли способ определить мим из возвращаемого намерения, чтобы определить, является ли контент изображением или нет.

Если это не сработает, мне может потребоваться использовать MimeTypeMap для определения mime из расширения файла.

ответ

17

Я нашел способ получить тип mime содержимого uri, но ничего не работало для других типов uri, таких как uri's из формы 'file: // .....'.

Чтобы получить тип пантомимы контента Ури -

ContentResolver cr = this.getContentResolver(); 
    String mime = cr.getType(YOUR_CONTENT_URI); 

Это работает только для содержания Ури. Поэтому для других uri я использую MimeTypeMap для вывода их типа mime из расширения файла.

+0

Я попробовал то же самое, в моем 'onActivityResult()', но 'GetType (data.getData())' возвращение мне нуль – NarendraJi

4

, если у вас есть URI, то вы можете получить MimeType как

Uri uri = Uri.fromFile(file); 
ContentResolver cR = context.getContentResolver(); 
String mime = cR.getType(uri); 

или попробовать // URL = путь к файлу или любой другой подходящий URL вы хотите.

public static String getMimeType(String url) 
{ 
    String type = null; 
    String extension = MimeTypeMap.getFileExtensionFromUrl(url); 
    if (extension != null) { 
     MimeTypeMap mime = MimeTypeMap.getSingleton(); 
     type = mime.getMimeTypeFromExtension(extension); 
    } 
    return type; 
} 

Для получения более подробной информации see these Answers

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