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,892评论 18 139
  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 13,910评论 0 15
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,179评论 25 708
  • 亚洲马拉锦标赛 正好莞马第二载 三万选手齐登场 印度健儿把冠摘 我们业余也登台 徒步十三公里外 没有叫累停下来 五...
    神于天圣于地阅读 181评论 0 1
  • 这些天总是在班车上睡觉,好像睡不醒一样,朋友说叫“眼眯虫”,呵呵!每个地方的方言都蛮好玩的,“春困秋乏夏打盹,睡不...
    OO碰到OO阅读 243评论 0 0