ฉันมีรายชื่อ Uris ที่ได้รับจากคลังภาพและกล้องถ่ายรูป content://media/external/images/media/94
ยูริเหล่านี้เป็นเช่นนี้ ฉันจะรับประเภทละครใบ้ได้อย่างไร
ฉันมีรายชื่อ Uris ที่ได้รับจากคลังภาพและกล้องถ่ายรูป content://media/external/images/media/94
ยูริเหล่านี้เป็นเช่นนี้ ฉันจะรับประเภทละครใบ้ได้อย่างไร
คำตอบ:
คุณสามารถลอง
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" ซึ่งเป็นค่าที่คาดหวัง
cR.getType(uri)
แต่สำหรับime.getExtensionFromMimeType(cR.getType(uri));
ฉันได้ค่าว่าง .csv ไม่รองรับหรืออะไร?
วิธีนี้จะคืนค่านามสกุลของไฟล์ (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;
}
สำหรับ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;
}
แทนสิ่งนี้:
String type = mime.getExtensionFromMimeType(cR.getType(uri));
ทำเช่นนี้:
String type = cR.getType(uri);
และคุณจะได้รับสิ่งนี้: image/jpeg
.
mime.getExtensionFromMimeType(cR.getType(uri))
ส่งคืนฉัน"jpeg"
แต่cR.getType(uri)
กลับ"image/jpeg"
เป็นมูลค่าที่คาดหวัง