如何根据文件类型打开适当的应用程序

时间:2014-07-31 05:59:39

标签: android file

我正在尝试打开放在文件夹中的文件。我们的想法是提供下载的应用程序可以打开的最大类型的office文件+ pdf。所以我下载了14种不同的文件类型样本,如.docx,.ppt,.pdf等。 我有WPS办公室作为运行这些的应用程序。但问题是,当我使用下面的代码时,直接文件在WPS办公应用程序中打开。如果我更改为target.setDataAndType(Uri.fromFile(open), "application/pdf");,那么它会显示adobe reader和WPS office。有没有办法在没有特别指定/ pdf或/ msword的情况下获得打开文件的最佳选择?这样我就可以根据输入类型得到可用的应用列表。

Intent target = new Intent(Intent.ACTION_VIEW);
                target.setDataAndType(Uri.fromFile(open), "application/msword");
                target.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);

                Intent intent = Intent.createChooser(target, "Open File");
                try {
                    startActivity(intent);
                } catch (ActivityNotFoundException e) {
                    // Instruct the user to install a PDF reader here, or
                    // something
                    Toast.makeText(
                            getApplicationContext(),
                            "Please install proper document reader in your device to open this file",
                            Toast.LENGTH_SHORT).show();
                } 

1 个答案:

答案 0 :(得分:1)

我假设您要使用文件扩展名打开应用程序,而不指定应用程序/ *

 File file = new File(filePath);
    MimeTypeMap map = MimeTypeMap.getSingleton();
    String ext = MimeTypeMap.getFileExtensionFromUrl(file.getName());
    String type = map.getMimeTypeFromExtension(ext);

    if (type == null)
        type = "*/*";

    Intent intent = new Intent(Intent.ACTION_VIEW);
    Uri data = Uri.fromFile(file);

    intent.setDataAndType(data, type);

    startActivity(intent);

这应该获得扩展并打开“尽可能好的”应用程序