打开任何类型的Android文件,而不明确声明MIME类型

时间:2014-07-07 14:24:11

标签: android android-intent uri mime-types

我正在使用此方法打开启动Intent以在Android上打开文件(我在评论中描述了我的问题):

public static void openFile(Context context, String fileName) {
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        // intent.setType(FileHelper.getMimeType(file)); // this doesn't work for PDF files
        // opens Intent but then the chosen application doesn't open the file
        intent.setType("application/pdf");  // this works correctly for PDF files
        intent.setData(Uri.parse("file://" + getPath(context) + fileName));
        context.startActivity(intent);
    }

我希望有一个单一方法可以打开任何类型的文件,而不必显式指定MIME类型,这可能吗?

1 个答案:

答案 0 :(得分:3)

打开文件需要Mime类型,即我们必须设置数据和类型。您可以使用此功能打开任何文件:

public void openFile(Context ctx,String filepath)   
{   
Uri ttt = Uri.parse("file://" + filepath);
Intent intent = new Intent(Intent.ACTION_VIEW);
String arr[] = filepath.split("\\.");
MimeTypeMap myMime = MimeTypeMap.getSingleton();
String mimeType = myMime.getMimeTypeFromExtension(arr[arr.length - 1]);
intent.setDataAndType(ttt, mimeType);
ctx.startActivity(intent);
}

但是,没有扩展名的文件会有问题。