4

我正在制作一个 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);

但这将向我显示一个“选择应用程序以完成您的操作”对话框,其中包含许多应用程序,例如“音乐”“画廊”等,但没有通用应用程序。

谢谢!

4

4 回答 4

11

因为在 android 中没有任何本机应用程序可以用作文件资源管理器并响应Intent type "*/*"

File-Explorer为此目的实现您自己的代码..

看看这两个链接..

  1. 开放意图

  2. Android-文件-探索

于 2012-08-30T10:40:23.107 回答
5
public void loadfile()
{
    private static final int gallery=12; 
    private static final 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());
    }
}
于 2017-12-01T05:44:03.563 回答
2

Android 4.4 KitKat(API 级别 19)开始,有一个 Android 内置文件选择器:您的应用调用ACTION_OPEN_DOCUMENT和/或ACTION_CREATE_DOCUMENT意图并接收文档提供程序返回的文件。更多信息可以在这里找到:

使用存储访问框架打开文件 | 安卓开发者

根据您要存储文件的位置,您可能需要请求权限:

请求应用权限 | 安卓开发者

这是一个如何:

Android 存储访问框架示例 - Techtopia

Ian Lake本地存储就是一个很好的工作示例。它的源代码可以在 GitHub 上找到:

https://github.com/ianhanniballake/LocalStorage

该应用程序可以从 Google Play 下载:

https://play.google.com/store/apps/details?id=com.ianhanniballake.localstorage

于 2018-07-25T13:10:14.690 回答
1

大多数 android 发行版都没有默认文件浏览器,您注意到的行为是默认的 android 行为。如果安装了任何好的第三方文件浏览器,它将自动显示在该列表中。但是,不能保证每个最终用户都会安装文件浏览器。可以为此创建一个通用的片段小部件(并且可能与其他人共享)。

于 2012-08-30T10:42:37.407 回答