我正在制作一个Android应用程序,它将一些下载的pdf文件存储在设备的SD卡中。 一切正常,但现在我想添加一个功能,只需弹出默认的android文件/文件夹浏览器,显示我的应用程序存储所有PDF(包含子目录)的目录,以便用户可以看到他的文档存储位置和可以轻松浏览它们。
我已经完成了许多其他SO问题和论坛帖子,但似乎这只能用于音乐/图片/联系人等。基本上那些具有“专用浏览系统”但不具备一般文件浏览功能的文件类型。
我实际上正在使用此代码:
File file = new File("/sdcard/MySorgenia/Documenti/");
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
Uri data = Uri.fromFile(file);
String type = "*/*";
intent.setDataAndType(data, type);
startActivity(intent);
但是这将显示“选择应用程序以完成您的操作”对话框,其中包含许多应用程序,如“音乐”“图库”等,但没有通用目的。
谢谢!
答案 0 :(得分:9)
因为在Android中没有任何本机应用程序,您可以将其用作文件资源管理器并响应Intent type "*/*"
为此目的实施您自己的File-Explorer
代码..
看看这两个链接..
答案 1 :(得分:2)
public void loaddile()
{
private static final int gallery=12;
String type="*/*";
Intent i=new Intent(Intent.ACTION_GET_CONTENT);
i.setType(type);
startActivityForResult(Intent.createChooser(i,"select file") ,gallery);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == gallery && resultCode == RESULT_OK && data != null) {
Uri uploadfileuri = data.getData();
File file = new File(uploadfileuri.getPath());
}
}
答案 2 :(得分:1)
大多数Android发行版都没有默认文件浏览器,您注意到的行为是默认的Android行为。如果安装了任何好的第三方文件浏览器,它将自动显示在该列表中。但是,无法保证每个最终用户都安装了文件浏览器。可以为此创建一个通用的片段小部件(并且可能与其他人共享)。
答案 3 :(得分:1)
自Android 4.4 KitKat (API level 19)起,就有一个Android内置文件选择器:您的应用程序调用{{1}}和/或ACTION_OPEN_DOCUMENT
的意图,并接收文档提供者返回的文件。有关此的更多信息,请参见:
Open files using storage access framework | Android Developers
根据您想要存储文件的位置,您可能需要请求权限:
Request App Permissions | Android Developers
这是一种方法:
An Android Storage Access Framework Example - Techtopia。
一个很好的示例是Ian Lake的本地存储。可以在GitHub上找到其来源:
https://github.com/ianhanniballake/LocalStorage
该应用可以从Google Play下载:
https://play.google.com/store/apps/details?id=com.ianhanniballake.localstorage