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

在Android開發中,經過需要用到調用外部應用來打開一個文件,

而且,該文件可能是圖片、視頻、音頻、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時,設置為""可以讓用戶自己選擇手機已安裝的程序進行打開文件

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

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