Android 다른 유형의 파일 열기

7498 단어 android
다음으로 이동:http://blog.csdn.net/t5721654/article/details/6860287
 
마침 다운로드 미리 보기 기능 을 만들어 서 파일 을 열 려 고 하 는데 꽤 괜 찮 은 글 을 보고 돌 아 왔 습 니 다.그 중에서 openFile 방법 은 Intent. create Chooser () 방식 으로 프로그램 을 여 는 것 을 선택 할 수 있 습 니 다.
 
배경 설명:
MIME: 전 칭 Multipurpose Internet Mail Extensions, 다기 능 인터넷 메 일 확장 서비스.이것 은 다 용도 인터넷 메 일 확장 프로 토 콜 로 1992 년 에 최초 로 메 일 시스템 에 응용 되 었 으 나 나중에 브 라 우 저 에 도 응용 되 었 다.MIME 형식 은 어떤 확장자 의 파일 을 프로그램 으로 여 는 방식 으로 설정 하 는 것 입 니 다. 이 확장자 파일 이 접근 할 때 브 라 우 저 는 자동 으로 지정 한 프로그램 으로 엽 니 다.클 라 이언 트 가 사용자 정의 한 파일 이름과 일부 미디어 파일 열기 방식 을 지정 하 는 데 많이 사 용 됩 니 다.
안 드 로 이 드 에 서 는 파일 의 MIME 형식 을 통 해 어떤 프로그램 이 이 파일 을 처리 할 수 있 는 지 판단 하고 그 중의 한 프로그램 을 사용 합 니 다 (선택 할 수 있 는 프로그램 이 여러 개 있 으 면 사용 자 는 하 나 를 지정 해 야 합 니 다).
안 드 로 이 드 자원 관리자 (파일 브 라 우 저) 를 쓸 때 자원 관리자 에서 파일 을 여 는 작업 을 하고 싶 습 니 다. 이 때 파일 의 MIME 형식 이 필요 합 니 다.
배경 분할 선
실현 방법:
 
[java] 
view plain
copy
/** 
 * 파일 접미사 이름 에 맞 는 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
        if(end.equals(MIME_MapTable[i][0]))  
            type = MIME_MapTable[i][1];  
    }  
    return type;  
}  
/** 
 * 파일 열기 
 * @param file 
 */  
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);  
    //파일 파일 의 MIME 형식 가 져 오기  
    String type = getMIMEType(file);  
    //intent 의 data 와 Type 속성 을 설정 합 니 다.  
    intent.setDataAndType(/*uri*/Uri.fromFile(file), type);  
    //점프  
    startActivity(intent);      
}  
 
이제 MIME 형식 과 파일 형식의 일치 표 가 하나 부족 합 니 다.
 
"파일 형식 - MIME 형식" 의 일치 표:
[java]
view plain
copy
/ / 파일 접미사 이름 과 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"},  
    {"",        "*/*"}      
};  



이 표 는 아직 완전 하지 않 습 니 다. 위 에 있 는 것 은 자주 사용 하 는 파일 형식 일 뿐 입 니 다. 다른 파일 형식 과 MIME 의 일치 치 는 나중에 업데이트 하 겠 습 니 다.

좋은 웹페이지 즐겨찾기