android - 如何显示给定 Android 设备支持的所有 MIME 类型的列表?

标签 android android-developer-api

我正在尝试以编程方式显示设备支持的格式。我在网上找到了这个。问题是,如何显示这些?请帮助我,我是 Android 开发的新手。

这里是检查设备文件格式的代码。

    package com.android.mmscommon;

import java.util.ArrayList;

public class ContentType {

    public static final String MMS_MESSAGE       = "application/vnd.wap.mms-message";
    // The phony content type for generic PDUs (e.g. ReadOrig.ind,
    // Notification.ind, Delivery.ind).
    public static final String MMS_GENERIC       = "application/vnd.wap.mms-generic";
    public static final String MULTIPART_MIXED   = "application/vnd.wap.multipart.mixed";
    public static final String MULTIPART_RELATED = "application/vnd.wap.multipart.related";
    public static final String MULTIPART_ALTERNATIVE = "application/vnd.wap.multipart.alternative";
    public static final String TEXT_PLAIN        = "text/plain";
    public static final String TEXT_HTML         = "text/html";
    public static final String TEXT_VCALENDAR    = "text/x-vCalendar";
    public static final String TEXT_VCARD        = "text/x-vCard";
    public static final String IMAGE_UNSPECIFIED = "image/*";
    public static final String IMAGE_JPEG        = "image/jpeg";
    public static final String IMAGE_JPG         = "image/jpg";
    public static final String IMAGE_GIF         = "image/gif";
    public static final String IMAGE_WBMP        = "image/vnd.wap.wbmp";
    public static final String IMAGE_PNG         = "image/png";
    public static final String AUDIO_UNSPECIFIED = "audio/*";
    public static final String AUDIO_AAC         = "audio/aac";
    public static final String AUDIO_AMR         = "audio/amr";
    public static final String AUDIO_IMELODY     = "audio/imelody";
    public static final String AUDIO_MID         = "audio/mid";
    public static final String AUDIO_MIDI        = "audio/midi";
    public static final String AUDIO_MP3         = "audio/mp3";
    public static final String AUDIO_MPEG3       = "audio/mpeg3";
    public static final String AUDIO_MPEG        = "audio/mpeg";
    public static final String AUDIO_MPG         = "audio/mpg";
    public static final String AUDIO_MP4         = "audio/mp4";
    public static final String AUDIO_X_MID       = "audio/x-mid";
    public static final String AUDIO_X_MIDI      = "audio/x-midi";
    public static final String AUDIO_X_MP3       = "audio/x-mp3";
    public static final String AUDIO_X_MPEG3     = "audio/x-mpeg3";
    public static final String AUDIO_X_MPEG      = "audio/x-mpeg";
    public static final String AUDIO_X_MPG       = "audio/x-mpg";
    public static final String AUDIO_3GPP        = "audio/3gpp";
    public static final String AUDIO_OGG         = "application/ogg";
    public static final String VIDEO_UNSPECIFIED = "video/*";
    public static final String VIDEO_3GPP        = "video/3gpp";
    public static final String VIDEO_3G2         = "video/3gpp2";
    public static final String VIDEO_H263        = "video/h263";
    public static final String VIDEO_MP4         = "video/mp4";
    public static final String APP_SMIL          = "application/smil";
    public static final String APP_WAP_XHTML     = "application/vnd.wap.xhtml+xml";
    public static final String APP_XHTML         = "application/xhtml+xml";
    public static final String APP_DRM_CONTENT   = "application/vnd.oma.drm.content";
    public static final String APP_DRM_MESSAGE   = "application/vnd.oma.drm.message";
    private static final ArrayList<String> sSupportedContentTypes = new ArrayList<String>();
    private static final ArrayList<String> sSupportedImageTypes = new ArrayList<String>();
    private static final ArrayList<String> sSupportedAudioTypes = new ArrayList<String>();
    private static final ArrayList<String> sSupportedVideoTypes = new ArrayList<String>();
    static {
        sSupportedContentTypes.add(TEXT_PLAIN);
        sSupportedContentTypes.add(TEXT_HTML);
        sSupportedContentTypes.add(TEXT_VCALENDAR);
        sSupportedContentTypes.add(TEXT_VCARD);
        sSupportedContentTypes.add(IMAGE_JPEG);
        sSupportedContentTypes.add(IMAGE_GIF);
        sSupportedContentTypes.add(IMAGE_WBMP);
        sSupportedContentTypes.add(IMAGE_PNG);
        sSupportedContentTypes.add(IMAGE_JPG);
        //supportedContentTypes.add(IMAGE_SVG); not yet supported.
        sSupportedContentTypes.add(AUDIO_AAC);
        sSupportedContentTypes.add(AUDIO_AMR);
        sSupportedContentTypes.add(AUDIO_IMELODY);
        sSupportedContentTypes.add(AUDIO_MID);
        sSupportedContentTypes.add(AUDIO_MIDI);
        sSupportedContentTypes.add(AUDIO_MP3);
        sSupportedContentTypes.add(AUDIO_MPEG3);
        sSupportedContentTypes.add(AUDIO_MPEG);
        sSupportedContentTypes.add(AUDIO_MPG);
        sSupportedContentTypes.add(AUDIO_X_MID);
        sSupportedContentTypes.add(AUDIO_X_MIDI);
        sSupportedContentTypes.add(AUDIO_X_MP3);
        sSupportedContentTypes.add(AUDIO_X_MPEG3);
        sSupportedContentTypes.add(AUDIO_X_MPEG);
        sSupportedContentTypes.add(AUDIO_X_MPG);
        sSupportedContentTypes.add(AUDIO_3GPP);
        sSupportedContentTypes.add(AUDIO_OGG);
        sSupportedContentTypes.add(VIDEO_3GPP);
        sSupportedContentTypes.add(VIDEO_3G2);
        sSupportedContentTypes.add(VIDEO_H263);
        sSupportedContentTypes.add(VIDEO_MP4);
        sSupportedContentTypes.add(APP_SMIL);
        sSupportedContentTypes.add(APP_WAP_XHTML);
        sSupportedContentTypes.add(APP_XHTML);
        sSupportedContentTypes.add(APP_DRM_CONTENT);
        sSupportedContentTypes.add(APP_DRM_MESSAGE);
        // add supported image types
        sSupportedImageTypes.add(IMAGE_JPEG);
        sSupportedImageTypes.add(IMAGE_GIF);
        sSupportedImageTypes.add(IMAGE_WBMP);
        sSupportedImageTypes.add(IMAGE_PNG);
        sSupportedImageTypes.add(IMAGE_JPG);
        // add supported audio types
        sSupportedAudioTypes.add(AUDIO_AAC);
        sSupportedAudioTypes.add(AUDIO_AMR);
        sSupportedAudioTypes.add(AUDIO_IMELODY);
        sSupportedAudioTypes.add(AUDIO_MID);
        sSupportedAudioTypes.add(AUDIO_MIDI);
        sSupportedAudioTypes.add(AUDIO_MP3);
        sSupportedAudioTypes.add(AUDIO_MPEG3);
        sSupportedAudioTypes.add(AUDIO_MPEG);
        sSupportedAudioTypes.add(AUDIO_MPG);
        sSupportedAudioTypes.add(AUDIO_MP4);
        sSupportedAudioTypes.add(AUDIO_X_MID);
        sSupportedAudioTypes.add(AUDIO_X_MIDI);
        sSupportedAudioTypes.add(AUDIO_X_MP3);
        sSupportedAudioTypes.add(AUDIO_X_MPEG3);
        sSupportedAudioTypes.add(AUDIO_X_MPEG);
        sSupportedAudioTypes.add(AUDIO_X_MPG);
        sSupportedAudioTypes.add(AUDIO_3GPP);
        sSupportedAudioTypes.add(AUDIO_OGG);
        // add supported video types
        sSupportedVideoTypes.add(VIDEO_3GPP);
        sSupportedVideoTypes.add(VIDEO_3G2);
        sSupportedVideoTypes.add(VIDEO_H263);
        sSupportedVideoTypes.add(VIDEO_MP4);
    }
    // This class should never be instantiated.
    private ContentType() {
    }
    public static boolean isSupportedType(String contentType) {
        return (null != contentType) && sSupportedContentTypes.contains(contentType);
    }
    public static boolean isSupportedImageType(String contentType) {
        return isImageType(contentType) && isSupportedType(contentType);
    }
    public static boolean isSupportedAudioType(String contentType) {
        return isAudioType(contentType) && isSupportedType(contentType);
    }
    public static boolean isSupportedVideoType(String contentType) {
        return isVideoType(contentType) && isSupportedType(contentType);
    }
    public static boolean isTextType(String contentType) {
        return (null != contentType) && contentType.startsWith("text/");
    }
    public static boolean isImageType(String contentType) {
        return (null != contentType) && contentType.startsWith("image/");
    }
    public static boolean isAudioType(String contentType) {
        return (null != contentType) && contentType.startsWith("audio/");
    }
    public static boolean isVideoType(String contentType) {
        return (null != contentType) && contentType.startsWith("video/");
    }
    public static boolean isDrmType(String contentType) {
        return (null != contentType)
                && (contentType.equals(APP_DRM_CONTENT)
                        || contentType.equals(APP_DRM_MESSAGE));
    }
    public static boolean isUnspecified(String contentType) {
        return (null != contentType) && contentType.endsWith("*");
    }
    @SuppressWarnings("unchecked")
    public static ArrayList<String> getImageTypes() {
        return (ArrayList<String>) sSupportedImageTypes.clone();
    }
    @SuppressWarnings("unchecked")
    public static ArrayList<String> getAudioTypes() {
        return (ArrayList<String>) sSupportedAudioTypes.clone();
    }
    @SuppressWarnings("unchecked")
    public static ArrayList<String> getVideoTypes() {
        return (ArrayList<String>) sSupportedVideoTypes.clone();
    }
    @SuppressWarnings("unchecked")
    public static ArrayList<String> getSupportedTypes() {
        return (ArrayList<String>) sSupportedContentTypes.clone();
    }
}

最佳答案

这是完整列表:https://www.iana.org/assignments/media-types/media-types.xhtml

这里的 android 文档中引用了它:https://developer.android.com/guide/topics/providers/content-provider-creating.html#MIMETypes

请注意,只有当用户拥有合适的应用程序时,才支持这些 MIME 类型。我认为您不能以编程方式显示支持的 MIME 类型。但是,您可以使用如下代码检查您要使用的那个是否受支持:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(someUri, "YOUR_MIME_TYPE_HERE");
if(intent.resolveActivity(activity.getPackageManager()) != null)
{
    lActivity.startActivity(intent);
}
else
{
    Log.w(TAG, "There is no application for this MIME type");
}

关于android - 如何显示给定 Android 设备支持的所有 MIME 类型的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39663818/

相关文章:

android - 从 TextView 编辑文本到android中的编辑文本

android - 为什么我的 ExpandableListView 中的点击会被忽略?

android - 单击刷新按钮刷新 Activity 内容

Android Realm 查询关系

java - JSONObject 返回类型

android - Android 版本 < 23 中的状态栏图标和文本色调

android - 未能找到哈希字符串为 'android-P' 的目标

android-studio - 多个人可以在一个android studio项目上工作吗

android - 设置 Google Pay 以向用户汇款

android - 从 Android Studio 3.0 构建时如何克服应用程序未安装错误?