正好做一个下载预览功能,要打开文件,记录下实现方法。其中openFile方法可以自己改一下通过Intent.createChooser()方式来选择打开程序。

这里用到的就是MIME,在Android中通过文件的MIME类型来判断有哪些应用程序可以处理这些文件,并使用其中的某一个应用程序(如果有多个可选的应用程序,则用户必须指定一个)处理之。

如果希望能在资源管理器的中实现打开文件的操作,此时就需要用到文件的MIME类型。

/**

 * 根据文件后缀名获得对应的MIME类型。

 * @param file

 */

private String getMIMEType(File file)

{

    String type="*/*";

    String fName=file.getName();

    int dotIndex = fName.lastIndexOf(".");

    if(dotIndex < 0){

        return type;

    }

    String end=fName.substring(dotIndex,fName.length()).toLowerCase();

    if(end=="")return type;

    for(int i=0;i<MIME_MapTable.length;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.setAction(Intent.ACTION_VIEW);

    String type = getMIMEType(file);

    intent.setDataAndType(/*uri*/Uri.fromFile(file), type);

    startActivity(intent);   

}

以下是常用的文件类型与MIME对应的列表

private final String[][] MIME_MapTable={

    //{后缀名,    MIME类型}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

};

14 1

共收到1条回复

daguye 937天前 #1楼

排版注意啊亲!!!!

0 评论

加入小组与大家一起讨论吧