Android開發(fā) 打開各種類型文件、預(yù)覽不同類型文件(適配7.0以上)

在Android開發(fā)中,經(jīng)過需要用到調(diào)用外部應(yīng)用來打開一個文件,

而且,該文件可能是圖片、視頻、音頻、CAD文件、壓縮包文件等等……

/** 
 * 打開一個文件 
 *  
 * @param filePath 
 *            文件的絕對路徑 
 */  
private void openFile(final String filePath)  {
        String ext = filePath.substring(filePath.lastIndexOf('.')).toLowerCase(Locale.US);
        StrictMode.VmPolicy defultVmPolicy = null;
        boolean isNeedMatch = Build.VERSION.SDK_INT >= Build.VERSION_CODES.N;
        try {
            if (isNeedMatch) {
                defultVmPolicy = StrictMode.getVmPolicy();
                StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
                StrictMode.setVmPolicy(builder.build());
            }
            MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
            String temp = ext.substring(1);
            String mime = mimeTypeMap.getMimeTypeFromExtension(temp);
            mime = TextUtils.isEmpty(mime) ? "" : mime;
            Intent intent = new Intent();
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.setAction(android.content.Intent.ACTION_VIEW);
            File file = new File(filePath);
            intent.setDataAndType(Uri.fromFile(file), mime);
            startActivity(intent);
        } catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(getApplicationContext(), "無法打開后綴名為." + ext + "的文件!",   Toast.LENGTH_LONG).show();  
        } finally {
            if (isNeedMatch) StrictMode.setVmPolicy(defultVmPolicy);
        } 
}  

上面用到MimeTypeMap 類,用于獲取MIME映射信息,這個方法簡單實用,不用自己去寫一大堆MIME映射了……
如果mimeTypeMap.getMimeTypeFromExtension(temp)獲取的值為null時,設(shè)置為""可以讓用戶自己選擇手機已安裝的程序進行打開文件

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

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評論 19 139
  • 點擊查看原文 Web SDK 開發(fā)手冊 SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個完善的 IM 系統(tǒng)...
    layjoy閱讀 14,299評論 0 15
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,917評論 25 709
  • 亞洲馬拉錦標賽 正好莞馬第二載 三萬選手齊登場 印度健兒把冠摘 我們業(yè)余也登臺 徒步十三公里外 沒有叫累停下來 五...
    神于天圣于地閱讀 208評論 0 1
  • 這些天總是在班車上睡覺,好像睡不醒一樣,朋友說叫“眼瞇蟲”,呵呵!每個地方的方言都蠻好玩的,“春困秋乏夏打盹,睡不...
    OO碰到OO閱讀 269評論 0 0

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