使用默认资源管理器在Android中查看文件夹内容

Bog*_*dru 3 android android-intent

我想以编程方式启动默认文件资源管理器以显示文件夹的内容.

我正在使用此代码,但它崩溃了:

    Uri startDir = Uri.fromFile(new File("/sdcard/DCIM/Camera")); 
    Intent intent = new Intent(); 
    intent.setAction(Intent.ACTION_VIEW); 
    intent.setData(startDir);
    startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

LogCat显示"找不到处理意图的活动"......

我最好的选择是什么?我希望用户能够看到文件夹的内容并能够单击文件(例如,单击视频并使用默认播放器启动它,单击PDF并打开它等).

Nim*_*a G 7

不幸的是,似乎没有标准的方法来做到这一点,我之前正在寻找完全相同的东西,但无法找到任何解决方案.有两种替代方法可能适合您:

1)使用一般意图并让用户选择他/她的文件管理器 这是安全和容易的,但与我们真正想要的有点远

Uri startDir = Uri.fromFile(new File(Environment.getExternalStorageDirectory()
        .getAbsolutePath() + "/DCIM/Camera"));
    Intent intent = new Intent();
    intent.setData(startDir);
    intent.setType("*/*");
    intent.setAction(Intent.ACTION_VIEW);
    startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

不要使用intent.setType("file/*");,它不是标准的MIME类型.

2)使用着名文件管理器提供特定意图众所周知的文件管理器有自己的自定义意图过滤器,它们接受允许简单浏览的目录路径.其中一些在这里:OI文件管理器,ES Explorer

也许您可以检查用户是否安装了这些特定的文件管理器,然后使用此解决方案,否则回退到一般意图.

目前,这是您拥有的唯一两个选项.如果我找到更好的解决方案,我会更新这篇文章.