IconUtils.java revision 0b14db3cf5eac43736462999337c9a3efdc1ac81
10b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey/*
20b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey * Copyright (C) 2013 The Android Open Source Project
30b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey *
40b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey * Licensed under the Apache License, Version 2.0 (the "License");
50b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey * you may not use this file except in compliance with the License.
60b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey * You may obtain a copy of the License at
70b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey *
80b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey *      http://www.apache.org/licenses/LICENSE-2.0
90b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey *
100b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey * Unless required by applicable law or agreed to in writing, software
110b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey * distributed under the License is distributed on an "AS IS" BASIS,
120b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey * See the License for the specific language governing permissions and
140b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey * limitations under the License.
150b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey */
160b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
170b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkeypackage com.android.documentsui;
180b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
190b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkeyimport android.content.Context;
200b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkeyimport android.content.pm.PackageManager;
210b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkeyimport android.content.pm.ProviderInfo;
220b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkeyimport android.content.res.Resources;
230b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkeyimport android.graphics.drawable.Drawable;
240b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkeyimport android.provider.DocumentsContract.Document;
250b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
260b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkeyimport com.google.android.collect.Maps;
270b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
280b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkeyimport java.util.HashMap;
290b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
300b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkeypublic class IconUtils {
310b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
320b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey    private static HashMap<String, Integer> sMimeIcons = Maps.newHashMap();
330b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
340b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey    private static void add(String mimeType, int resId) {
350b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        if (sMimeIcons.put(mimeType, resId) != null) {
360b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey            throw new RuntimeException(mimeType + " already registered!");
370b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        }
380b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey    }
390b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
400b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey    static {
410b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        int icon;
420b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
430b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Package
440b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        icon = R.drawable.ic_doc_apk;
450b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.android.package-archive", icon);
460b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
470b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Audio
480b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        icon = R.drawable.ic_doc_audio;
490b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/ogg", icon);
500b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-flac", icon);
510b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
520b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Certificate
530b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        icon = R.drawable.ic_doc_certificate;
540b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/pgp-keys", icon);
550b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/pgp-signature", icon);
560b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-pkcs12", icon);
570b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-pkcs7-certreqresp", icon);
580b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-pkcs7-crl", icon);
590b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-x509-ca-cert", icon);
600b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-x509-user-cert", icon);
610b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-pkcs7-certificates", icon);
620b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-pkcs7-mime", icon);
630b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-pkcs7-signature", icon);
640b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
650b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Source code
660b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        icon = R.drawable.ic_doc_codes;
670b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/rdf+xml", icon);
680b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/rss+xml", icon);
690b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-object", icon);
700b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/xhtml+xml", icon);
710b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/css", icon);
720b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/html", icon);
730b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/xml", icon);
740b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/x-c++hdr", icon);
750b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/x-c++src", icon);
760b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/x-chdr", icon);
770b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/x-csrc", icon);
780b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/x-dsrc", icon);
790b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/x-csh", icon);
800b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/x-haskell", icon);
810b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/x-java", icon);
820b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/x-literate-haskell", icon);
830b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/x-pascal", icon);
840b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/x-tcl", icon);
850b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/x-tex", icon);
860b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-latex", icon);
870b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-texinfo", icon);
880b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/atom+xml", icon);
890b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/ecmascript", icon);
900b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/json", icon);
910b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/javascript", icon);
920b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/xml", icon);
930b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/javascript", icon);
940b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-javascript", icon);
950b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
960b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Compressed
970b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        icon = R.drawable.ic_doc_compressed;
980b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/mac-binhex40", icon);
990b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/rar", icon);
1000b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/zip", icon);
1010b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-apple-diskimage", icon);
1020b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-debian-package", icon);
1030b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-gtar", icon);
1040b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-iso9660-image", icon);
1050b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-lha", icon);
1060b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-lzh", icon);
1070b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-lzx", icon);
1080b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-stuffit", icon);
1090b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-tar", icon);
1100b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-webarchive", icon);
1110b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-webarchive-xml", icon);
1120b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/gzip", icon);
1130b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-7z-compressed", icon);
1140b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-deb", icon);
1150b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-rar-compressed", icon);
1160b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
1170b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Contact
1180b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        icon = R.drawable.ic_doc_contact;
1190b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/x-vcard", icon);
1200b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/vcard", icon);
1210b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
1220b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Event
1230b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        icon = R.drawable.ic_doc_event;
1240b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/calendar", icon);
1250b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/x-vcalendar", icon);
1260b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
1270b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Font
1280b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        icon = R.drawable.ic_doc_font;
1290b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-font", icon);
1300b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/font-woff", icon);
1310b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-font-woff", icon);
1320b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-font-ttf", icon);
1330b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
1340b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Image
1350b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        icon = R.drawable.ic_doc_image;
1360b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.oasis.opendocument.graphics", icon);
1370b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.oasis.opendocument.graphics-template", icon);
1380b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.oasis.opendocument.image", icon);
1390b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.stardivision.draw", icon);
1400b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.sun.xml.draw", icon);
1410b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.sun.xml.draw.template", icon);
1420b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
1430b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // PDF
1440b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        icon = R.drawable.ic_doc_pdf;
1450b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/pdf", icon);
1460b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
1470b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Presentation
1480b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        icon = R.drawable.ic_doc_presentation;
1490b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.ms-powerpoint", icon);
1500b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.openxmlformats-officedocument.presentationml.presentation", icon);
1510b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.openxmlformats-officedocument.presentationml.template", icon);
1520b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.openxmlformats-officedocument.presentationml.slideshow", icon);
1530b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.stardivision.impress", icon);
1540b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.sun.xml.impress", icon);
1550b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.sun.xml.impress.template", icon);
1560b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-kpresenter", icon);
1570b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.oasis.opendocument.presentation", icon);
1580b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
1590b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Spreadsheet
1600b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        icon = R.drawable.ic_doc_spreadsheet;
1610b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.oasis.opendocument.spreadsheet", icon);
1620b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.oasis.opendocument.spreadsheet-template", icon);
1630b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.ms-excel", icon);
1640b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", icon);
1650b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.openxmlformats-officedocument.spreadsheetml.template", icon);
1660b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.stardivision.calc", icon);
1670b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.sun.xml.calc", icon);
1680b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.sun.xml.calc.template", icon);
1690b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-kspread", icon);
1700b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
1710b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Text
1720b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        icon = R.drawable.ic_doc_text;
1730b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.oasis.opendocument.text", icon);
1740b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.oasis.opendocument.text-master", icon);
1750b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.oasis.opendocument.text-template", icon);
1760b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.oasis.opendocument.text-web", icon);
1770b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/msword", icon);
1780b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.openxmlformats-officedocument.wordprocessingml.document", icon);
1790b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.openxmlformats-officedocument.wordprocessingml.template", icon);
1800b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.stardivision.writer", icon);
1810b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.stardivision.writer-global", icon);
1820b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.sun.xml.writer", icon);
1830b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.sun.xml.writer.global", icon);
1840b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.sun.xml.writer.template", icon);
1850b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-abiword", icon);
1860b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-kword", icon);
1870b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
1880b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Video
1890b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        icon = R.drawable.ic_doc_video;
1900b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-quicktimeplayer", icon);
1910b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-shockwave-flash", icon);
1920b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey    }
1930b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
1940b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey    public static Drawable loadPackageIcon(Context context, String authority, int icon) {
1950b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        if (icon != 0) {
1960b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey            if (authority != null) {
1970b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey                final PackageManager pm = context.getPackageManager();
1980b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey                final ProviderInfo info = pm.resolveContentProvider(authority, 0);
1990b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey                if (info != null) {
2000b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey                    return pm.getDrawable(info.packageName, icon, info.applicationInfo);
2010b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey                }
2020b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey            } else {
2030b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey                return context.getResources().getDrawable(icon);
2040b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey            }
2050b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        }
2060b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        return null;
2070b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey    }
2080b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
2090b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey    public static Drawable loadMimeIcon(Context context, String mimeType) {
2100b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        final Resources res = context.getResources();
2110b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
2120b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        if (Document.MIME_TYPE_DIR.equals(mimeType)) {
2130b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey            return res.getDrawable(R.drawable.ic_dir);
2140b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        }
2150b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
2160b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Look for exact match first
2170b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        Integer resId = sMimeIcons.get(mimeType);
2180b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        if (resId != null) {
2190b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey            return res.getDrawable(resId);
2200b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        }
2210b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
2220b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        if (mimeType == null) {
2230b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey            // TODO: generic icon?
2240b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey            return null;
2250b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        }
2260b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
2270b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Otherwise look for partial match
2280b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        final String typeOnly = mimeType.split("/")[0];
2290b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        if ("audio".equals(typeOnly)) {
2300b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey            return res.getDrawable(R.drawable.ic_doc_audio);
2310b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        } else if ("image".equals(typeOnly)) {
2320b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey            return res.getDrawable(R.drawable.ic_doc_image);
2330b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        } else if ("text".equals(typeOnly)) {
2340b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey            return res.getDrawable(R.drawable.ic_doc_text);
2350b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        } else if ("video".equals(typeOnly)) {
2360b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey            return res.getDrawable(R.drawable.ic_doc_video);
2370b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        } else {
2380b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey            // TODO: generic icon?
2390b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey            return null;
2400b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        }
2410b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey    }
2420b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey}
243