98

ギャラリーとカメラで取得した Uris のリストがあります。これらの Uris は次のようになりますcontent://media/external/images/media/94。MIME タイプを取得するにはどうすればよいですか?

4

6 に答える 6

203

あなたが試すことができます

ContentResolver cR = context.getContentResolver();
MimeTypeMap mime = MimeTypeMap.getSingleton();
String type = mime.getExtensionFromMimeType(cR.getType(uri));

編集 :

mime.getExtensionFromMimeType(cR.getType(uri)) 

戻り値 -> "jpeg"

cR.getType(uri);

期待値である「image/jpeg」を返します。

于 2012-09-18T09:19:54.157 に答える
35

このメソッドは、ファイルの拡張子 (jpg、png、pdf、epub など) を返します。

 public static String getMimeType(Context context, Uri uri) {
    String extension;

    //Check uri format to avoid null
    if (uri.getScheme().equals(ContentResolver.SCHEME_CONTENT)) {
        //If scheme is a content
        final MimeTypeMap mime = MimeTypeMap.getSingleton();
        extension = mime.getExtensionFromMimeType(context.getContentResolver().getType(uri));
    } else {
        //If scheme is a File
        //This will replace white spaces with %20 and also other special characters. This will avoid returning null values on file name with spaces and special characters.
        extension = MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(new File(uri.getPath())).toString());

    }

    return extension;
}
于 2016-04-09T09:09:46.427 に答える
18

のためにContent Uri

ContentResolver cr = context.getContentResolver();
mimeType = cr.getType(contentUri);

のためにFile Uri

String fileExtension = MimeTypeMap.getFileExtensionFromUrl(fileUri
            .toString());
mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(
            fileExtension.toLowerCase());

Content同様に機能しFileます。

public String getMimeType(Context context, Uri uri) {
    String mimeType = null;
    if (ContentResolver.SCHEME_CONTENT.equals(uri.getScheme())) {
        ContentResolver cr = context.getContentResolver();
        mimeType = cr.getType(uri);
    } else {
        String fileExtension = MimeTypeMap.getFileExtensionFromUrl(uri
                .toString());
        mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(
                fileExtension.toLowerCase());
    }
    return mimeType;
}
于 2018-03-30T09:30:28.260 に答える
8

これの代わりに:

String type = mime.getExtensionFromMimeType(cR.getType(uri));

これを行う:

String type = cR.getType(uri);

そして、あなたはこれを得るでしょう: image/jpeg.

于 2013-03-28T11:05:14.983 に答える