用户必须通过可视文件管理器指定包含文件的文件夹的路径。找到以下代码。但这里不是文件夹,而是文件。是的,我不明白路径本身记录在哪里。
任何人都可以提出其他解决方案。
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*"); //all files
// intent.setType("text/xml"); //XML file only
intent.addCategory(Intent.CATEGORY_OPENABLE);
try {
startActivityForResult(Intent.createChooser(intent, "Select a File to Upload"), a);
} catch (android.content.ActivityNotFoundException ex) {
// Potentially direct the user to the Market with a Dialog
Toast.makeText(this, "Please install a File Manager.", Toast.LENGTH_SHORT).show();
}
向上!
实现了选择文件并获取其路径。但我仍然无法选择文件夹。
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*"); //all files
intent.addCategory(Intent.CATEGORY_OPENABLE);
try {
startActivityForResult(Intent.createChooser(intent, "Select a File to Upload"), REQUEST_CODE);
} catch (android.content.ActivityNotFoundException ex) {
// Potentially direct the user to the Market with a Dialog
Toast.makeText(this, "Please install a File Manager.", Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
Uri uri = data.getData();
Toast.makeText(this, uri+"", Toast.LENGTH_SHORT).show();
}
}
要使用文件管理器,您需要使用这样的功能,例如
onActivityResult()
有关您单击的文件/文件夹的路径的数据会出现在这里,例如:那么您已经根据需要处理了接收到的路径:
以下是一些有用的资源:
更新
然后一切都非常简单,您需要检查用户究竟选择了什么 - 文件或文件夹:
还有第二种选择:
然后如果这是一个文件夹,那么您对其执行操作以提取您需要的文件。
更新_2.0
为了选择文件夹,有这样一种方法:
然后处理:
这种方法应该最适合你。
感谢@Andrew 和一些在互联网上的更多挖掘,我找到了针对不同情况的以下解决方案:
要选择单个文件,请使用:
如果我们要选择多个文件 - 添加
并选择一个文件夹使用
在确定文件或文件夹,单选或多选后,我们添加
现在我们可以转到处理程序了。
如果我们选择 1 个文件,那么只需:
如果有几个,那么你需要处理数组。在示例中,我仅采用第一个元素。并且需要 try-catch 以便如果您选择 1 个元素,则会发生错误,
ClipData a = data.getClipData();
因此如果我们捕获它,则只有一个元素,您可以使用通常的Uri uri = data.getData();