android獲取文件類型與對(duì)應(yīng)Intent

廢話不多說直接上代碼

1.編寫各種文件類型和后綴名數(shù)組:

    //文件類型
    public static final int TYPE_FOLDER = 0;
    public static final int TYPE_FILE = 1;
    //public static final int TYPE_PICTURE = 0;
    public static final int TYPE_VIDEO = 2;
    public static final int OPEN_FILE = 10;
    public static final int TYPE_AUDIO = 13;
    public static final int TYPE_PICTURE = 14;
    public static final int TYPE_DOC = 21;
    public static final int TYPE_XLS = 22;
    public static final int TYPE_PPT = 23;
    public static final int TYPE_PDF = 24;
    public static final int TYPE_TXT = 25;


/** 視頻格式 */
    public static final String[] MIME_TYPE_VIDEO_ALL = { ".3gp", ".3gpp", ".divx",
            ".h264", ".avi", ".m2ts", ".mkv", ".mov", ".mp2", ".mp4", ".mpg",
            ".mpeg", ".wmv", ".ts", ".tp" , ".vob",
            ".flv", ".vc1", ".m4v", ".f4v", ".asf", ".lst", ".lsf", ".lsx",
            ".mng", ".asx", ".wm", ".wmx", ".wvx", ".movie", ".3g2", ".dl",
            ".dif", ".dv", ".fli", ".qt", ".mxu",".webm", "mkv", "rmvb"};   

    /** 音頻格式 */
    public static final String[] MIME_TYPE_MUSIC = { ".mp3", ".wma", ".m4a",
        ".aac", ".ape", ".ogg", ".flac", ".alac", ".wav", ".mid", ".xmf",
        ".mka", ".pcm", ".adpcm", ".snd", ".midi", ".kar", ".mpga",
        ".mpega", ".mp2", ".m3u", ".sid", ".aif", ".aiff", ".aifc", ".gsm",
        ".m3u", ".wax", ".ra", ".ram", ".pls", ".sd2","amr","wv","mmf","m4r"};
    
    
    /** 圖片格式 */
    public static final String[] MIME_TYPE_PHOTO = { ".jpg", ".jpeg", ".bmp",
        ".tif", ".tiff", ".png", ".gif", ".giff", ".jfi", ".jpe", ".jif",
        ".jfif", ".cur", ".ico", ".ief", ".jpe", ".pcx", ".svg", ".svgz",
        ".djvu", ".djv", ".wbmp", ".ras", ".cdr", ".pat", ".cdt", ".cpt",
        ".art", ".jng", ".psd", ".pnm", ".pbm", ".pgm", ".ppm", ".rgb",
        ".xbm", ".xpm", ".xwd" };

2.傳人文件名返回文件類型

/** 文件類型 */
    public static int getFileType(String filename){
        
        
        if(filename.contains(".")){
            
            
            String type = filename.substring(filename.lastIndexOf("."));
            
            //Utils.MyLog("file: " + name + "   type: " + type);
            if(type.equalsIgnoreCase(".doc") || type.equalsIgnoreCase(".docx")){
                
                return Utils.TYPE_DOC;
                
            }else if(type.equalsIgnoreCase(".xls") || type.equalsIgnoreCase(".xlsx")){
                
                return Utils.TYPE_XLS;
                
            }else if(type.equalsIgnoreCase(".ppt") || type.equalsIgnoreCase(".pptx")){
                
                return Utils.TYPE_PPT;
                
            }else if(type.equalsIgnoreCase(".pdf")){
                
                return Utils.TYPE_PDF;
                
            }else if(type.equalsIgnoreCase(".txt")){
                
                return Utils.TYPE_TXT;
                
            }else{
                
                for (String format : Utils.MIME_TYPE_PHOTO) {
                    if (format.equalsIgnoreCase(type)) {
                        return Utils.TYPE_PICTURE;
                    }
                }
                
                for (String format : Utils.MIME_TYPE_VIDEO_ALL) {
                    if (format.equalsIgnoreCase(type)) {
                        return Utils.TYPE_VIDEO;
                    }
                }
                
                for (String format : Utils.MIME_TYPE_MUSIC) {
                    if (format.equalsIgnoreCase(type)) {
                        return Utils.TYPE_AUDIO;
                    }
                }
                
            }   
            
        }else{
            
            return Utils.TYPE_FILE;
            
        }
        
        return Utils.TYPE_FILE;
        
    } 
    

3.不同類型文件的Intent

    /**對(duì)應(yīng)文件的Intent*/
    public static Intent getIntentByFileType(int type, String path){
        switch(type){
        case Utils.TYPE_AUDIO:
            return getAudioFileIntent(path);
            
        case Utils.TYPE_PICTURE:
            return getImageFileIntent(path);
            
        case Utils.TYPE_DOC:
            return getWordFileIntent(path);
                    
        case Utils.TYPE_XLS:
            return getExcelFileIntent(path);
            
        case Utils.TYPE_PPT:
            return getPptFileIntent(path);
                    
        case Utils.TYPE_PDF:
            return getPdfFileIntent(path);
                    
        case Utils.TYPE_TXT:
            return getTextFileIntent(path);
                    
        default:
            return null;
        }
    }
    
    
    
    
    
    /** android獲取一個(gè)用于打開HTML文件的intent */
    public static Intent getHtmlFileIntent(String param)

    {

        Uri uri = Uri.parse(param).buildUpon()
                .encodedAuthority("com.android.htmlfileprovider")
                .scheme("content").encodedPath(param).build();

        Intent intent = new Intent("android.intent.action.VIEW");

        intent.setDataAndType(uri, "text/html");
        return intent;

    }

    /** android獲取一個(gè)用于打開圖片文件的intent */
    public static Intent getImageFileIntent(String param)

    {

        Intent intent = new Intent("android.intent.action.VIEW");

        intent.addCategory("android.intent.category.DEFAULT");

        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        Uri uri = Uri.fromFile(new File(param));

        intent.setDataAndType(uri, "image/*");

        return intent;

    }

    
    /** android獲取一個(gè)用于打開PDF文件的intent */
    public static Intent getPdfFileIntent(String param)

    {

        Intent intent = new Intent("android.intent.action.VIEW");

        intent.addCategory("android.intent.category.DEFAULT");

        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        Uri uri = Uri.fromFile(new File(param));

        intent.setDataAndType(uri, "application/pdf");

        return intent;

    }

    
    /** android獲取一個(gè)用于打開文本文件的intent */
    public static Intent getTextFileIntent(String param
            //,boolean paramBoolean)
            )
    {

        Intent intent = new Intent("android.intent.action.VIEW");

        intent.addCategory("android.intent.category.DEFAULT");

        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

            Uri uri1 = Uri.parse(param);

            intent.setDataAndType(uri1, "text/plain");
        
        return intent;

    }

    /** android獲取一個(gè)用于打開音頻文件的intent */
    public static Intent getAudioFileIntent(String param)

    {

        Intent intent = new Intent("android.intent.action.VIEW");

        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        intent.putExtra("oneshot", 0);

        intent.putExtra("configchange", 0);

        Uri uri = Uri.fromFile(new File(param));

        intent.setDataAndType(uri, "audio/*");

        return intent;

    }

    /** android獲取一個(gè)用于打開視頻文件的intent */
    public static Intent getVideoFileIntent(String param)

    {

        Intent intent = new Intent("android.intent.action.VIEW");

        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        intent.putExtra("oneshot", 0);

        intent.putExtra("configchange", 0);

        Uri uri = Uri.fromFile(new File(param));

        intent.setDataAndType(uri, "video/*");

        return intent;

    }

    /** android獲取一個(gè)用于打開CHM文件的intent */
    public static Intent getChmFileIntent(String param)

    {

        Intent intent = new Intent("android.intent.action.VIEW");

        intent.addCategory("android.intent.category.DEFAULT");

        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        Uri uri = Uri.fromFile(new File(param));

        intent.setDataAndType(uri, "application/x-chm");

        return intent;

    }

    /** android獲取一個(gè)用于打開Word文件的intent */
    public static Intent getWordFileIntent(String param)

    {

        Intent intent = new Intent("android.intent.action.VIEW");

        intent.addCategory("android.intent.category.DEFAULT");

        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        Uri uri = Uri.fromFile(new File(param));

        intent.setDataAndType(uri, "application/msword");

        return intent;

    }

    
    /** android獲取一個(gè)用于打開Excel文件的intent */
    public static Intent getExcelFileIntent(String param)

    {

        Intent intent = new Intent("android.intent.action.VIEW");

        intent.addCategory("android.intent.category.DEFAULT");

        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        Uri uri = Uri.fromFile(new File(param));

        intent.setDataAndType(uri, "application/vnd.ms-excel");

        return intent;

    }

    
    /** android獲取一個(gè)用于打開PPT文件的intent */
    public static Intent getPptFileIntent(String param)

    {

        Intent intent = new Intent("android.intent.action.VIEW");

        intent.addCategory("android.intent.category.DEFAULT");

        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        Uri uri = Uri.fromFile(new File(param));

        intent.setDataAndType(uri, "application/vnd.ms-powerpoint");

        return intent;

    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容