在android中使用默认应用程序打开文件

Rah*_*wat 5 java android android-intent

我正在 android 中制作一个文件浏览器。因此,我希望当单击除目录之外的任何文件时,我想获得可以打开它的应用程序的建议,如果没有应用程序,则显示对话。我尝试了一些解决方案,但没有任何效果,所以,现在,我只是显示该文件不是 toast 中的目录

这是代码的一部分:

protected void onListItemClick(ListView l, View v, int position, long id) {
    String filename = (String) getListAdapter().getItem(position);
    if (path.endsWith(File.separator)) {
        filename = path + filename;
    } else {
        filename = path + File.separator + filename;
    }
    if (new File(filename).isDirectory()) {
        Intent intent = new Intent(this, ListFileActivity.class);
        intent.putExtra("path", filename);
        startActivity(intent);
    } else {
        Toast.makeText(this, filename + " is not a directory", Toast.LENGTH_LONG).show();
    }
}
Run Code Online (Sandbox Code Playgroud)

use*_*305 5

Android 有一些内置的Intent Action Type,可以帮助您打开或查看特定文件,但为此您需要知道要处理哪种类型的文件。

假设如果您有可以使用的文档类型分类的文件类型,

ACTION_OPEN_DOCUMENT具有特定MIME_TYPE(Android 4.4 或更高版本)

或者如果您要处理一些媒体文件(音频/视频)

您可以使用,

ACTION_VIEW
Run Code Online (Sandbox Code Playgroud)

要识别MIME_TYPE特定文件,您可以使用函数

guessContentTypeFromName (String url)关联

getMimeTypeFromExtension(String extension)链接

  • 较旧的帖子,但快速参考http://stackoverflow.com/questions/6265298/action-view-intent-for-a-file-with-unknown-mimetype。我建议您使用最新的“意图操作”。 (2认同)