Android 打开本地文件

来源:互联网 发布:pmi指数知乎 编辑:程序博客网 时间:2024/06/07 13:22

Android 打开本地的文件,目前来说,其实很常见。而且现在有手机版的office了。查看office的全家桶就更加方便。

首先要知道的是,Android 打开本地文件是根据类型打开的,也就是根据文件的 MIME 类型来确定

如果不知道是什么类型,那就是 : */*

类型匹配表:

private static 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"},            {"",        "*/*"}    };

  获取文件的类型。

    private String getMIMEType(File file) {        String type="*/*";        String fName = file.getName();        //获取后缀名前的分隔符"."在fName中的位置。          int dotIndex = fName.lastIndexOf(".");        if(dotIndex < 0)            return type;        /* 获取文件的后缀名 */        String fileType = fName.substring(dotIndex,fName.length()).toLowerCase();        if(fileType == null || "".equals(fileType))            return type;        //在MIME和文件类型的匹配表中找到对应的MIME类型。          for(int i=0;i<MIME_MapTable.length;i++){              if(fileType.equals(MIME_MapTable[i][0]))                type = MIME_MapTable[i][1];        }        return type;    }

  打开文件

    Intent intent = new Intent();    File file = new File(FileDirectory);    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//设置标记    intent.setAction(Intent.ACTION_VIEW);//动作,查看    intent.setDataAndType(Uri.fromFile(file), getMIMEType(file));//设置类型    context.startActivity(intent);

  

 

原创粉丝点击