Android调用系统应用打开各种类型文件

来源:互联网 发布:网络维护用软件 编辑:程序博客网 时间:2024/06/15 05:36

1.建立匹配表

    //建立一个文件类型与文件后缀名的匹配表    private static final String[][] MATCH_ARRAY={            //{后缀名,    文件类型}            {".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/plain"},            {".z",        "application/x-compress"},            {".zip",    "application/zip"},            {"",        "*/*"}    };

2.根据路径打开文件

    /**     * 根据路径打开文件     * @param context 上下文     * @param path 文件路径     */    public static void openFileByPath(Context context,String path) {        if(context==null||path==null)            return;        Intent intent = new Intent();        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        //设置intent的Action属性        intent.setAction(Intent.ACTION_VIEW);        //文件的类型        String type = "";        for(int i =0;i<MATCH_ARRAY.length;i++){            //判断文件的格式            if(path.toString().contains(MATCH_ARRAY[i][0].toString())){                type = MATCH_ARRAY[i][1];                break;            }        }        try {            //设置intent的data和Type属性            intent.setDataAndType(Uri.fromFile(new File(path)), type);            //跳转            context.startActivity(intent);        } catch (Exception e) { //当系统没有携带文件打开软件,提示            ShowToastUtil.showToast(context,"无法打开该格式文件!");            e.printStackTrace();        }    }

3.结果

①当系统打不开该格式文件


②当系统应用可以打开文件



注:下载的文件是一个PDF格式的文件