以编程方式在android中读取任何扩展名的文件

时间:2015-05-22 13:01:33

标签: android

只是想确认是否有可能当我点击任何扩展程序的文件时会打开Android手机中的兼容软件,或者显示移动设备中可以打开文件的软件列表,如果它没有'找到任何软件,它会指示用户首先下载软件以打开该特定文件(所有这一切都需要以编程方式完成)。

感谢。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

为了打开文件,您可以使用以下方法,如果没有可以处理给定文件的应用程序,它只显示Toast表示没有找到应用程序。

private void viewFile(String filePath, String title, int fileType) {
        Uri uri = Uri.parse("file://" + filePath);
        Intent intent = new Intent(Intent.ACTION_VIEW);
        String dataAndType = getIntentDataAndType(filePath);
        intent.setDataAndType(uri, dataAndType);
        intent.putExtra(Intent.EXTRA_TITLE, title);
        // Verify that the intent will resolve to an activity
        if (intent.resolveActivity(getActivity().getPackageManager()) != null) {
            startActivity(intent);
        } else {
            Toast.makeText(getActivity(), "No Application found", Toast.LENGTH_SHORT).show();
        }
    }

更新: 用于查找文件的mime类型。

private String getIntentDataAndType(String filePath) {
        String exten = "";
        int i = filePath.lastIndexOf('.');
        // If the index position is greater than zero then get the substring.
        if (i > 0) {
            exten = filePath.substring(i + 1);
        }
        String mimeType = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(exten);
        mimeType = (mimeType == null) ? "*/*" : mimeType;
        return mimeType;
    }