2011-01-31 23 views
9

Tôi đang cố gắng xác định Loại Mime/Media được lưu trữ trên thiết bị Android (thực ra là thiết bị ảo mà tôi đang sử dụng với trình mô phỏng). Tôi tìm thấy tài nguyên này Get the MIME Type from a File đó khuyến cáo các javax.activation.MimetypesFileTypeMap, tuy nhiên khi tôi chạy đoạn mã sau tôi nhận được application/octet-stream cho tất cả các loại tập tin:Java MimetypesFileTypeMap luôn trả về ứng dụng/octet-stream trên trình giả lập Android

MimetypesFileTypeMap map = new MimetypesFileTypeMap(); 
File dir = Environment.getExternalStorageDirectory(); 
File[] files = dir.listFiles(); 
String mimeType; 
for(int i = 0; i < files.length; ++i) { 
    if(files[i].isDirectory() == false) { 
     mimeType = map.getContentType(files[i]); 
     if(mimeType.toLowerCase().equals("application/octet-stream")) { 
      Log.d("mytag", 
       String.format("Unable to determine the mime type of file %s.", 
       files[i].getName())); 
     } 
    } 
} 

Tôi đã thử nghiệm này với các tập tin có phần mở rộng sau: jpg, txt, doc, xslx và pdf và tất cả đều trở lại cùng một thứ. Có điều gì tôi phải làm để khởi tạo bản đồ không? Thư viện này có thể không tìm thấy danh sách các loại mime được hỗ trợ trên Android không? Có cách nào tốt hơn để lấy loại mime của một tệp trên Android không?

+0

tôi đang gặp vấn đề tương tự (android không được tham gia), xem liên kết này http://stackoverflow.com/questions/ 6308142/add-mimetypes-to-mimetypesfiletypemap. Tôi nghĩ rằng chúng ta cần phải thêm một tập tin reosurce với một danh sách đầy đủ các loại mime, chưa thử nhưng tuy nhiên –

Trả lời

13

Đã xảy ra sự cố này. Theo Tài liệu Java, các tìm kiếm MimetypesFileTypeMap

  1. Các mục nhập được lập trình bổ sung vào cá thể MimetypesFileTypeMap.
  2. Tệp .mime.types trong thư mục chính của người dùng.
  3. File /lib/mime.types
  4. Các tập tin hoặc tài nguyên tên META-INF/mime-loại
  5. Các tập tin hoặc tài nguyên tên META-INF/mime-types.default (thường chỉ được tìm thấy trong việc kích hoạt .jar file)

Nếu các Mimetypes của bạn xuất hiện dưới dạng "application/octet-stream", điều này ngụ ý rằng bạn không có tệp nào ở trên (hoặc chúng hiện diện nhưng không đầy đủ) và chưa thêm bất kỳ các mục nhập vào cá thể MimetypesFileTypeMap của bạn.

Để giải quyết ...

MimetypesFileTypeMap định dạng kiểu MIME đặc điểm kỹ thuật

# comments start with hash marks 
# format is <mime type> <space separated file extensions> 
# for example, for an image mime type and a text mime type 
image png tif jpg jpeg bmp 
text txt text rtf TXT 
# either place those lines within the files specified by 2-4 or 

MimetypesFileTypeMap mtftp = new MimetypesFileTypeMap(); 
mtftp.addMimeTypes("image png tif jpg jpeg bmp") 

# and it's as easy as that! 
+0

Đã thử nó .. Nó đã làm việc !!! Cảm ơn!!! –

+0

Theo tài liệu MimetypesFileTypeMap, định dạng tệp chính xác là: ** văn bản/văn bản thuần tuý TXT ** (Xin lỗi, tôi không thể định dạng được. :() – MGM

Các vấn đề liên quan