content: package dev.dworks.apps.anexplorer.misc;
  
  import android.text.TextUtils;
  import android.webkit.MimeTypeMap;
  
  import java.util.HashMap;
  import java.util.Locale;
  
  public final class MimeTypes {
  
      public static final String ALL_MIME_TYPES = "*/*";
      private static final HashMap<String, String> MIME_TYPES = new HashMap<String, String>();
      public static final String BASIC_MIME_TYPE = "application/octet-stream";
  
      private MimeTypes() {}
  
      static {
          MIME_TYPES.put("asm", "text/x-asm");
          MIME_TYPES.put("def", "text/plain");
          MIME_TYPES.put("in", "text/plain");
          MIME_TYPES.put("rc", "text/plain");
          MIME_TYPES.put("list", "text/plain");
          MIME_TYPES.put("log", "text/plain");
          MIME_TYPES.put("pl", "text/plain");
          MIME_TYPES.put("prop", "text/plain");
          MIME_TYPES.put("properties", "text/plain");
          MIME_TYPES.put("rc", "text/plain");
  
          MIME_TYPES.put("epub", "application/epub+zip");
          MIME_TYPES.put("ibooks", "application/x-ibooks+zip");
  
          MIME_TYPES.put("ifb", "text/calendar");
          MIME_TYPES.put("eml", "message/rfc822");
          MIME_TYPES.put("msg", "application/vnd.ms-outlook");
  
          MIME_TYPES.put("ace", "application/x-ace-compressed");
          MIME_TYPES.put("bz", "application/x-bzip");
          MIME_TYPES.put("bz2", "application/x-bzip2");
          MIME_TYPES.put("cab", "application/vnd.ms-cab-compressed");
          MIME_TYPES.put("gz", "application/x-gzip");
          MIME_TYPES.put("lrf", BASIC_MIME_TYPE);
          MIME_TYPES.put("jar", "application/java-archive");
          MIME_TYPES.put("xz", "application/x-xz");
          MIME_TYPES.put("Z", "application/x-compress");
  
          MIME_TYPES.put("bat", "application/x-msdownload");
          MIME_TYPES.put("ksh", "text/plain");
          MIME_TYPES.put("sh", "application/x-sh");
  
          MIME_TYPES.put("db", BASIC_MIME_TYPE);
          MIME_TYPES.put("db3", BASIC_MIME_TYPE);
  
          MIME_TYPES.put("otf", "application/x-font-otf");
          MIME_TYPES.put("ttf", "application/x-font-ttf");
          MIME_TYPES.put("psf", "application/x-font-linux-psf");
  
          MIME_TYPES.put("cgm", "image/cgm");
          MIME_TYPES.put("btif", "image/prs.btif");
          MIME_TYPES.put("dwg", "image/vnd.dwg");
          MIME_TYPES.put("dxf", "image/vnd.dxf");
          MIME_TYPES.put("fbs", "image/vnd.fastbidsheet");
          MIME_TYPES.put("fpx", "image/vnd.fpx");
          MIME_TYPES.put("fst", "image/vnd.fst");
          MIME_TYPES.put("mdi", "image/vnd.ms-mdi");
          MIME_TYPES.put("npx", "image/vnd.net-fpx");
          MIME_TYPES.put("xif", "image/vnd.xiff");
          MIME_TYPES.put("pct", "image/x-pict");
          MIME_TYPES.put("pic", "image/x-pict");
  
          MIME_TYPES.put("adp", "audio/adpcm");
          MIME_TYPES.put("au", "audio/basic");
          MIME_TYPES.put("snd", "audio/basic");
          MIME_TYPES.put("m2a", "audio/mpeg");
          MIME_TYPES.put("m3a", "audio/mpeg");
          MIME_TYPES.put("oga", "audio/ogg");
          MIME_TYPES.put("spx", "audio/ogg");
          MIME_TYPES.put("aac", "audio/x-aac");
          MIME_TYPES.put("mka", "audio/x-matroska");
  
          MIME_TYPES.put("jpgv", "video/jpeg");
          MIME_TYPES.put("jpgm", "video/jpm");
          MIME_TYPES.put("jpm", "video/jpm");
          MIME_TYPES.put("mj2", "video/mj2");
          MIME_TYPES.put("mjp2", "video/mj2");
          MIME_TYPES.put("mpa", "video/mpeg");
          MIME_TYPES.put("ogv", "video/ogg");
          MIME_TYPES.put("flv", "video/x-flv");
          MIME_TYPES.put("mkv", "video/x-matroska");
  
      }
  
      public static String getMimeTypeFromExtension(String extension) {
          String type = null;
  
          if (!TextUtils.isEmpty(extension)) {
              final String extensionLowerCase = extension.toLowerCase(Locale.getDefault());
              type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extensionLowerCase);
              if (type == null) {
                  //extra mime types map
                  type = MIME_TYPES.get(extensionLowerCase);
              }
          }
          return type;
      }
  }