MimeTypeMap myMime = MimeTypeMap.getSingleton(); Intent newIntent = new Intent(Intent.ACTION_VIEW); String mimeType = myMime.getMimeTypeFromExtension(fileExt(getFile()).substring(1)); newIntent.setDataAndType(Uri.fromFile(getFile()),mimeType); newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); try { context.startActivity(newIntent); } catch (ActivityNotFoundException e) { Toast.makeText(context, "No handler for this type of file.", Toast.LENGTH_LONG).show(); }
File file = new File(filePath); MimeTypeMap map = MimeTypeMap.getSingleton(); String ext = MimeTypeMap.getFileExtensionFromUrl(file.getName()); String type = map.getMimeTypeFromExtension(ext); if (type == null) type = "*/*"; Intent intent = new Intent(Intent.ACTION_VIEW); Uri data = Uri.fromFile(file); intent.setDataAndType(data, type); startActivity(intent);
public static String getMimeType(final String fileName) { String result = "application/octet-stream"; int extPos = fileName.lastIndexOf("."); if (extPos != -1) { String ext = fileName.substring(extPos + 1); result = MimeTypeMap.getSingleton().getMimeTypeFromExtension(ext); } return result; } }
private boolean isVideoFileUri(String uri) { String extension = MimeTypeMap.getFileExtensionFromUrl(uri); String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); return mimeType != null && mimeType.startsWith("video/"); } }
private static String getMimeType(File file) { if (file.isDirectory()) { return Document.MIME_TYPE_DIR; } else { final String name = file.getName(); final int lastDot = name.lastIndexOf('.'); if (lastDot >= 0) { final String extension = name.substring(lastDot + 1).toLowerCase(); final String mime = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); if (mime != null) return mime; } return "application/octet-stream"; } }
static String getSupposablyMime(String url) { MimeTypeMap mimes = MimeTypeMap.getSingleton(); String extension = MimeTypeMap.getFileExtensionFromUrl(url); return TextUtils.isEmpty(extension) ? null : mimes.getMimeTypeFromExtension(extension); }
public static String getMimeTypeByExtension(String filename) { String returnedType = null; String extension = null; if (filename != null && filename.lastIndexOf('.') != -1) { extension = filename.substring(filename.lastIndexOf('.') + 1).toLowerCase(Locale.US); returnedType = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); } // If the MIME type set by the user's mailer is application/octet-stream, try to figure // out whether there's a sane file type extension. if (returnedType != null && !isSameMimeType(returnedType, DEFAULT_ATTACHMENT_MIME_TYPE)) { return returnedType; } else if (extension != null) { for (String[] contentTypeMapEntry : MIME_TYPE_BY_EXTENSION_MAP) { if (contentTypeMapEntry[0].equals(extension)) { return contentTypeMapEntry[1]; } } } return DEFAULT_ATTACHMENT_MIME_TYPE; }
@Override public String getMimeType() { String fileName = getFileName(); if (TextUtils.isEmpty(mimeType) && !TextUtils.isEmpty(fileName)) { String extension = MimeTypeMap.getFileExtensionFromUrl(fileName); mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); } if (TextUtils.isEmpty(mimeType)) mimeType = Headers.HEAD_VALUE_CONTENT_TYPE_OCTET_STREAM; return mimeType; }
/** * Tries to guess the mime type from uri extension * * @param uri the uri * @return the mime type of the uri, with fallback {@link #MIME_TYPE_OCTET_STREAM} */ @NonNull public static String guessMimeType(@NonNull Uri uri) { String type = null; final String fileExtension = MimeTypeMap.getFileExtensionFromUrl(uri .toString()); if (fileExtension != null) { type = MimeTypeMap.getSingleton().getMimeTypeFromExtension( fileExtension.toLowerCase()); } if (type == null) { type = MIME_TYPE_OCTET_STREAM; } return type; } }
private boolean viewWithFileProvider(@NonNull File file) { if (!file.exists()) return true; String ext = Utility.getFileExt(file.getName()); if (ext == null) return false; String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(ext.substring(1)); Log.v(TAG, "Mime: " + mimeType + " package: " + BuildConfig.APPLICATION_ID + ".provider"); Uri uri = FileProvider.getUriForFile(mContext, BuildConfig.APPLICATION_ID + ".provider", file); Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setDataAndType(uri, mimeType); intent.addFlags(FLAG_GRANT_READ_URI_PERMISSION); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { intent.addFlags(FLAG_GRANT_PREFIX_URI_PERMISSION); } if(Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { intent.addFlags(FLAG_ACTIVITY_NEW_TASK); } //mContext.grantUriPermission(packageName, uri, Intent.FLAG_GRANT_READ_URI_PERMISSION); Log.v(TAG, "Starting intent: " + intent); if (intent.resolveActivity(mContext.getPackageManager()) != null) { mContext.startActivity(intent); } else { Toast noPlayerToast = Toast.makeText(mContext, R.string.toast_no_player, Toast.LENGTH_LONG); noPlayerToast.show(); } return true; }
/** * Tries to auto-detect the content type (MIME type) of a specific file. * @param absolutePath absolute path to the file * @return content type (MIME type) of the file, or application/octet-stream if no content * type could be determined automatically */ public static String autoDetect(String absolutePath) { String extension = null; int index = absolutePath.lastIndexOf(".") + 1; if (index >= 0 && index <= absolutePath.length()) { extension = absolutePath.substring(index); } if (extension == null || extension.isEmpty()) { return APPLICATION_OCTET_STREAM; } String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension.toLowerCase()); if (mimeType == null) { // mp4 does not always get recognized automatically if ("mp4".equalsIgnoreCase(extension)) return VIDEO_MPEG4; return APPLICATION_OCTET_STREAM; } return mimeType; }
public static String getMimeType(String url) { String type = ""; String extension = MimeTypeMap.getFileExtensionFromUrl(url); if (!TextUtils.isEmpty(extension)) { type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); } else { String reCheckExtension = MimeTypeMap.getFileExtensionFromUrl(url.replaceAll("\\s+", "")); if (!TextUtils.isEmpty(reCheckExtension)) { type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(reCheckExtension); } } return type; }
/** * Returns the MIME type of a content URI returned by * {@link #getUriForFile(Context, String, File) getUriForFile()}. * * @param uri A content URI returned by * {@link #getUriForFile(Context, String, File) getUriForFile()}. * @return If the associated file has an extension, the MIME type associated with that * extension; otherwise <code>application/octet-stream</code>. */ @Override public String getType(Uri uri) { // ContentProvider has already checked granted permissions final File file = mStrategy.getFileForUri(uri); final int lastDot = file.getName().lastIndexOf('.'); if (lastDot >= 0) { final String extension = file.getName().substring(lastDot + 1); final String mime = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); if (mime != null) { return mime; } } return "application/octet-stream"; }
MimeTypeMap mimeTypes = MimeTypeMap.getSingleton(); contentTypeToUse = mimeTypes.getMimeTypeFromExtension(fileExtension.toLowerCase()); if (contentTypeToUse == null) contentTypeToUse = "application/octet-stream"; } else {
public static String getMimeType(String url) { String extension = getExtension(url); if (!MimeTypeMap.getSingleton().hasExtension(extension)) return ""; String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); return TextUtils.isEmpty(mimeType) ? "" : mimeType; }
/** * 获取文件的MIME类型 */ public static String getMimeType(String pathOrUrl) { String ext = getExtension(pathOrUrl); MimeTypeMap map = MimeTypeMap.getSingleton(); String mimeType; if (map.hasExtension(ext)) { mimeType = map.getMimeTypeFromExtension(ext); } else { mimeType = "*/*"; } LogUtils.verbose(pathOrUrl + ": " + mimeType); return mimeType; }
String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension( MimeTypeMap.getFileExtensionFromUrl(filename)); if (TextUtils.isEmpty(mimeType)) {
private void addDocumentRow(MatrixCursor result, String child, String assetPath) throws IOException { MatrixCursor.RowBuilder row=result.newRow(); row.add(Document.COLUMN_DOCUMENT_ID, assetPath); if (isDirectory(assetPath)) { row.add(Document.COLUMN_MIME_TYPE, Document.MIME_TYPE_DIR); } else { String ext=MimeTypeMap.getFileExtensionFromUrl(assetPath); row.add(Document.COLUMN_MIME_TYPE, MimeTypeMap.getSingleton().getMimeTypeFromExtension(ext)); row.add(Document.COLUMN_SIZE, getAssetLength(assetPath)); } row.add(Document.COLUMN_DISPLAY_NAME, child); row.add(Document.COLUMN_FLAGS, 0); }
@Test public void unknownExtensionShouldProvideNothing() { ShadowMimeTypeMap shadowMimeTypeMap = Shadows.shadowOf(MimeTypeMap.getSingleton()); shadowMimeTypeMap.addExtensionMimeTypMapping(VIDEO_EXTENSION, VIDEO_MIMETYPE); shadowMimeTypeMap.addExtensionMimeTypMapping(IMAGE_EXTENSION, IMAGE_MIMETYPE); assertFalse(MimeTypeMap.getSingleton().hasExtension("foo")); assertNull(MimeTypeMap.getSingleton().getMimeTypeFromExtension("foo")); }
@Test public void addingMappingShouldWorkCorrectly() { ShadowMimeTypeMap shadowMimeTypeMap = Shadows.shadowOf(MimeTypeMap.getSingleton()); shadowMimeTypeMap.addExtensionMimeTypMapping(VIDEO_EXTENSION, VIDEO_MIMETYPE); shadowMimeTypeMap.addExtensionMimeTypMapping(IMAGE_EXTENSION, IMAGE_MIMETYPE); assertTrue(MimeTypeMap.getSingleton().hasExtension(VIDEO_EXTENSION)); assertTrue(MimeTypeMap.getSingleton().hasExtension(IMAGE_EXTENSION)); assertTrue(MimeTypeMap.getSingleton().hasMimeType(VIDEO_MIMETYPE)); assertTrue(MimeTypeMap.getSingleton().hasMimeType(IMAGE_MIMETYPE)); assertEquals(IMAGE_EXTENSION, MimeTypeMap.getSingleton().getExtensionFromMimeType(IMAGE_MIMETYPE)); assertEquals(VIDEO_EXTENSION, MimeTypeMap.getSingleton().getExtensionFromMimeType(VIDEO_MIMETYPE)); assertEquals(IMAGE_MIMETYPE, MimeTypeMap.getSingleton().getMimeTypeFromExtension(IMAGE_EXTENSION)); assertEquals(VIDEO_MIMETYPE, MimeTypeMap.getSingleton().getMimeTypeFromExtension(VIDEO_EXTENSION)); }