在卡上打开文件夹

时间:2014-07-20 23:16:49

标签: android android-intent android-sdcard

我认为这很简单,但是它比整个应用程序的其他部分给了我更多的工作。

我只想要一个按钮来打开" Downloaded Files"我的应用的文件夹。这就是全部。没有文件选择器,没有什么复杂的。所有按钮必须打开一个包含默认应用程序的文件夹(如果没有默认应用程序,则打开应用程序选择器)。

我尝试了在StackOverflow上看到的不同解决方案,但似乎没有什么对我有用。

示例1:

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
Uri uri = Uri.parse(Environment.getExternalStorageDirectory().getPath() + "/MyDownloadedFiles/");
intent.setDataAndType(uri, "text/plain");
startActivity(Intent.createChooser(intent, getString(R.string.action_downloaded)));

在我的Android 4.4上,这会打开KitKat文件选择器,甚至在我想要的文件夹中打开...它似乎默认为卡根。但是我确定该文件夹存在,并且给予Intent的路径确实是正确的。

示例2:

Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.parse(Environment.getExternalStorageDirectory().getPath() + "/MyDownloadedFiles/");
intent.setDataAndType(uri, "text/plain");
startActivity(Intent.createChooser(intent, getString(R.string.action_downloaded)));

这个打开一些空白活动,弹出窗口说:"获取文件内容时出错:MyDownloadedFiles"。

如何让我的应用只需一个文件夹的快捷方式来放入内容?

2 个答案:

答案 0 :(得分:4)

哇..最后!!在我尝试过很多事情之后,唯一可行的方法是首先将URI字符串包装到File中,然后执行Uri.fromFile:

File file = new File(Environment.getExternalStorageDirectory().getPath() + "/MyDownloadedFiles/");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "*/*");
startActivity(Intent.createChooser(intent, getString(R.string.action_downloaded)));

答案 1 :(得分:2)

我认为这个可能适合你:

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
Uri uri = Uri.parse(Environment.getExternalStorageDirectory().getPath()
    + "/yourFolder/");
intent.setDataAndType(uri, "*/*");
startActivity(Intent.createChooser(intent, "Open /sdcard/yourFolder"));