如何简单地打开目录/文件夹?

16
不要在阅读我的需求前将此标记为重复内容。
我看到很多类似的主题,但在它们中没有一篇提供了解决方案。 我需要的是最简单的东西:在我的应用程序中,我有一个名为“查看媒体文件”的按钮。点击该按钮后,我需要打开这个目录 - SD_CARD/my_folder(其中有媒体文件),并且我想单击其中任何一个文件时都应在默认媒体播放器中打开它。我已经使用了 SO 上所有建议的答案,例如:
    Intent intent = new Intent(Intent.ACTION_VIEW);
    Uri mydir = Uri.parse("/sdcard/Recorder_Videos");
    intent.setDataAndType(mydir, "*/*");
    startActivity(intent);

但他们所做的只是:点击按钮后,它会打开“选择文件”菜单: (当我点击时,我仍然无法播放媒体文件)

输入图片描述


1
你有检查过这个吗?https://dev59.com/8WQn5IYBdhLWcg3wAjPJ - OBX
1
从代码中删除 Intent.createChooser 来移除选择器。 - Budius
设备上没有默认文件浏览器也无需强制。这完全是可选的。 - Vladyslav Matviienko
Uri.parse(location); ??? location 的值是什么?如果我们甚至看不到您想要的路径,您如何抱怨它选择根目录!? (使用内置文件浏览器) ??? 那会是什么? - greenapps
你展示了文件选择意图的开放,那么问题是什么? - OneCricketeer
显示剩余3条评论
2个回答

9
我找到的解决方法(不完整)是,我缺少file://前缀。下面是我的解决方案(但是,它显示了所有种类的应用程序在第一视图上):
public void openFolder(String location)
{
    // location = "/sdcard/my_folder";
    Intent intent = new Intent(Intent.ACTION_VIEW);
    Uri mydir = Uri.parse("file://"+location);
    intent.setDataAndType(mydir,"application/*");    // or use */*
    startActivity(intent);
}

p.s. 奇怪而惊讶的是,在原生Android系统中不存在“文件浏览器”的标准定义(除非您安装第三方“文件浏览器”)...这就是为什么默认情况下“资源/文件夹”mime-type不起作用的原因。

然而,我们可以说一个简单的事实:文件浏览器是任何操作系统系统中简单而重要的一部分。而Android却说这不是他们的工作,并将责任推给第三方应用程序,这是相当不尊重的。


1
你可以使用类型为DocumentsContract.Document.MIME_TYPE_DIR的方法,它适用于多种设备并启动文件浏览器。你可以参考SO获取更多详细信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接