191125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishi/* 29e323c0012f3cf195af2ce5a272321af7f226fb3Salvador Martinez * Copyright (C) 2017 The Android Open Source Project 391125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishi * 491125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishi * Licensed under the Apache License, Version 2.0 (the "License"); 591125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishi * you may not use this file except in compliance with the License. 691125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishi * You may obtain a copy of the License at 791125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishi * 891125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishi * http://www.apache.org/licenses/LICENSE-2.0 991125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishi * 1091125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishi * Unless required by applicable law or agreed to in writing, software 1191125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishi * distributed under the License is distributed on an "AS IS" BASIS, 1291125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1391125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishi * See the License for the specific language governing permissions and 1491125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishi * limitations under the License. 1591125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishi */ 1691125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishi 1791125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishipackage com.android.storagemanager.utils; 1891125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishi 1991125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishiimport android.content.Context; 2091125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishiimport android.graphics.drawable.Drawable; 21226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishiimport android.webkit.MimeTypeMap; 22226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi 23226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishiimport java.io.File; 2491125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishi 2591125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishi/** 269e323c0012f3cf195af2ce5a272321af7f226fb3Salvador Martinez * IconProvider is a class for getting file icons. It is strongly based upon the DocumentsUI 279e323c0012f3cf195af2ce5a272321af7f226fb3Salvador Martinez * implementation of IconUtils, but tailored for the Deletion Helper use-case. Useful for testing. 2891125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishi */ 299e323c0012f3cf195af2ce5a272321af7f226fb3Salvador Martinezpublic class IconProvider { 309e323c0012f3cf195af2ce5a272321af7f226fb3Salvador Martinez private Context mContext; 319e323c0012f3cf195af2ce5a272321af7f226fb3Salvador Martinez 329e323c0012f3cf195af2ce5a272321af7f226fb3Salvador Martinez public IconProvider(Context context) { 339e323c0012f3cf195af2ce5a272321af7f226fb3Salvador Martinez mContext = context; 349e323c0012f3cf195af2ce5a272321af7f226fb3Salvador Martinez } 359e323c0012f3cf195af2ce5a272321af7f226fb3Salvador Martinez 3691125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishi /** 3791125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishi * Returns an icon which represents a file with the given MIME type. 389e323c0012f3cf195af2ce5a272321af7f226fb3Salvador Martinez * 3991125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishi * @param mimeType The MIME type of the file. 4091125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishi * @return 4191125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishi */ 429e323c0012f3cf195af2ce5a272321af7f226fb3Salvador Martinez public Drawable loadMimeIcon(String mimeType) { 439e323c0012f3cf195af2ce5a272321af7f226fb3Salvador Martinez return mContext.getContentResolver().getTypeDrawable(mimeType); 4491125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishi } 459e323c0012f3cf195af2ce5a272321af7f226fb3Salvador Martinez 46226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi public static String getMimeType(File file) { 47226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi String name = file.getName(); 48226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi final int lastDot = name.lastIndexOf('.'); 49226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi if (lastDot >= 0) { 50226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi final String extension = name.substring(lastDot + 1); 51226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi final String mimeType = 52226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension.toLowerCase()); 53226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi if (mimeType != null) { 54226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi return mimeType; 55226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi } 56226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi } 57226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi return "application/octet-stream"; 58226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi } 59226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi 60226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi public static boolean isImageType(File file) { 61226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi String mimeType = getMimeType(file); 62226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi return mimeType.startsWith("image/"); 63226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi } 64226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi 6591125be98af76cf3f854d72b6de7ac6e6c0c8229Daniel Nishi} 66