Android Intent打开任意文件的通用方式

来源:互联网 发布:成都网络外包公司 编辑:程序博客网 时间:2024/04/30 06:51
  • 如我所知:关于使用Intent打开各自类型的文件,网上已经有了大把的资料可以查阅。但是比较不幸的是:目前为止,我没有看到一个完整的,独立的,可以直接拿来就用的工具类。于是,结合之前查阅的资料,我对这些做了一个小小的整合,形成了下面的这个打开文件的工具类。
  • 代码很少,注释也比较清晰,也没有什么需要理解的地方,就直接上代码了。
    `
import java.io.File;import android.content.Context;import android.content.Intent;import android.net.Uri;import android.support.v4.app.Fragment;import android.webkit.MimeTypeMap;import android.widget.Toast;public class OpenFileUtils {    private OpenFileUtils() {    }    public static void openFile(File file, Context context) {        try {            Intent intent = new Intent();            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);            // 设置intent的Action属性            intent.setAction(Intent.ACTION_VIEW);            // 获取文件file的MIME类型            String fileExtensionFromUrl = MimeTypeMap                    .getFileExtensionFromUrl(Uri.fromFile(file).toString());            String mimeTypeFromExtension = MimeTypeMap.getSingleton()                    .getMimeTypeFromExtension(fileExtensionFromUrl);            // 设置intent的data和Type属性。            intent.setDataAndType(/* uri */Uri.fromFile(file),                    mimeTypeFromExtension);            // 跳转            context.startActivity(intent); // 这里最好try一下,有可能会报错。            // //比如说你的MIME类型是打开邮箱,但是你手机里面没装邮箱客户端,就会报错。        } catch (Exception e) {            vtoast("没有对应的应用", context);            e.printStackTrace();        }    }    public static void openFile(File file, Fragment context) {        try {            Intent intent = new Intent();            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);            // 设置intent的Action属性            intent.setAction(Intent.ACTION_VIEW);            // 获取文件file的MIME类型            String fileExtensionFromUrl = MimeTypeMap                    .getFileExtensionFromUrl(Uri.fromFile(file).toString());            String mimeTypeFromExtension = MimeTypeMap.getSingleton()                    .getMimeTypeFromExtension(fileExtensionFromUrl);            // 设置intent的data和Type属性。            intent.setDataAndType(/* uri */Uri.fromFile(file),                    mimeTypeFromExtension);            // 跳转            context.startActivity(intent); // 这里最好try一下,有可能会报错。            // //比如说你的MIME类型是打开邮箱,但是你手机里面没装邮箱客户端,就会报错。        } catch (Exception e) {            if (context.isAdded())                vtoast("没有对应的应用", context.getActivity());            e.printStackTrace();        }    }    private static void vtoast(final String text, final Context context) {        if ("main".equals(Thread.currentThread().getName())) {            Toast.makeText(context, text, Toast.LENGTH_SHORT).show();        } else {            System.out.println("subThread can't update UI");        }    }}

`
有任何疑问,请在浏览器地址栏输入: http://www.baidu.com ~.

0 0
原创粉丝点击