【问题标题】:Open file picker form my Android activity从我的 Android 活动中打开文件选择器
【发布时间】:2012-08-25 01:34:19
【问题描述】:

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

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

谢谢!

【问题讨论】:

    标签: android android-intent sd-card actionview


    【解决方案1】:

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

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

    看看这两个链接..

    1. openintents

    2. Android-File-Explore

    【讨论】:

      【解决方案2】:
      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());
          }
      }
      

      【讨论】:

      • 请给出Ans的一些描述。
      【解决方案3】:

      由于Android 4.4 KitKat (API level 19),有一个Android 内置文件选择器:您的应用调用ACTION_OPEN_DOCUMENT 和/或ACTION_CREATE_DOCUMENT Intent 并接收文档提供者返回的文件。更多信息可以在这里找到:

      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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-07-22
          • 1970-01-01
          • 2014-06-27
          • 1970-01-01
          • 2013-09-21
          • 2016-09-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多