天天看點

Android 中檔案類型與MIME的比對表

原文:http://blog.csdn.net/bigapple88/article/details/6555868

背景介紹:

mime:全稱multipurpose internet mail extensions,多功能internet 郵件擴充服務。它是一種多用途網際郵件擴充協定,在1992年最早應用于電子郵件系統,但後來也應用到浏覽器。mime類型就是設定某種擴充名的檔案用一種應用程式來打開的方式類型,當該擴充名檔案被通路的時候,浏覽器會自動使用指定應用程式來打開。多用于指定一些用戶端自定義的檔案名,以及一些媒體檔案打開方式。

在android中通過檔案的mime類型來判斷有哪些應用程式可以處理這些檔案,并使用其中的某一個應用程式(如果有多個可選的應用程式,則使用者必須指定一個)處理之。

我在寫android資料總管(檔案浏覽器)的時候,希望能在資料總管的中實作打開檔案的操作,此時就需要用到檔案的mime類型。

實作方法:

/**

* 根據檔案字尾名獲得對應的mime類型。

* @param file

*/

private string getmimetype(file file)

{

string type="*/*";

string fname=file.getname();

//擷取字尾名前的分隔符"."在fname中的位置。

int dotindex = fname.lastindexof(".");

if(dotindex < 0){

return type;

}

/* 擷取檔案的字尾名 */

string end=fname.substring(dotindex,fname.length()).tolowercase();

if(end=="")return type;

//在mime和檔案類型的比對表中找到對應的mime類型。

for(int i=0;i< p>

if(end.equals(mime_maptable[i][0]))

type = mime_maptable[i][1];

* 打開檔案

private void openfile(file file){

//uri uri = uri.parse("file://"+file.getabsolutepath());

intent intent = new intent();

intent.addflags(intent.flag_activity_new_task);

//設定intent的action屬性

intent.setaction(intent.action_view);

//擷取檔案file的mime類型

string type = getmimetype(file);

//設定intent的data和type屬性。

intent.setdataandtype(/*uri*/uri.fromfile(file), type);

//跳轉

startactivity(intent);

現在就差一個mime類型和檔案類型的比對表了。

------------------------------- 我是背景分割線 ------------------------------------------

"檔案類型——mime類型"的比對表:

//建立一個mime類型與檔案字尾名的比對表

private final string[][] mime_maptable={

//{字尾名, mime類型}

{".3gp", "video/3gpp"},

{".apk", "application/vnd.android.package-archive"},

{".asf", "video/x-ms-asf"},

{".avi", "video/x-msvideo"},

{".bin", "application/octet-stream"},

{".bmp", "image/bmp"},

{".c", "text/plain"},

{".class", "application/octet-stream"},

{".conf", "text/plain"},

{".cpp", "text/plain"},

{".doc", "application/msword"},

{".exe", "application/octet-stream"},

{".gif", "image/gif"},

{".gtar", "application/x-gtar"},

{".gz", "application/x-gzip"},

{".h", "text/plain"},

{".htm", "text/html"},

{".html", "text/html"},

{".jar", "application/java-archive"},

{".java", "text/plain"},

{".jpeg", "image/jpeg"},

{".jpg", "image/jpeg"},

{".js", "application/x-javascript"},

{".log", "text/plain"},

{".m3u", "audio/x-mpegurl"},

{".m4a", "audio/mp4a-latm"},

{".m4b", "audio/mp4a-latm"},

{".m4p", "audio/mp4a-latm"},

{".m4u", "video/vnd.mpegurl"},

{".m4v", "video/x-m4v"},

{".mov", "video/quicktime"},

{".mp2", "audio/x-mpeg"},

{".mp3", "audio/x-mpeg"},

{".mp4", "video/mp4"},

{".mpc", "application/vnd.mpohun.certificate"},

{".mpe", "video/mpeg"},

{".mpeg", "video/mpeg"},

{".mpg", "video/mpeg"},

{".mpg4", "video/mp4"},

{".mpga", "audio/mpeg"},

{".msg", "application/vnd.ms-outlook"},

{".ogg", "audio/ogg"},

{".pdf", "application/pdf"},

{".png", "image/png"},

{".pps", "application/vnd.ms-powerpoint"},

{".ppt", "application/vnd.ms-powerpoint"},

{".prop", "text/plain"},

{".rar", "application/x-rar-compressed"},

{".rc", "text/plain"},

{".rmvb", "audio/x-pn-realaudio"},

{".rtf", "application/rtf"},

{".sh", "text/plain"},

{".tar", "application/x-tar"},

{".tgz", "application/x-compressed"},

{".txt", "text/plain"},

{".wav", "audio/x-wav"},

{".wma", "audio/x-ms-wma"},

{".wmv", "audio/x-ms-wmv"},

{".wps", "application/vnd.ms-works"},

//{".xml", "text/xml"},

{".xml", "text/plain"},

{".z", "application/x-compress"},

{".zip", "application/zip"},

{"", "*/*"}

};