从我的Android活动中打开文件选择器

时间:2012-08-30 10:34:17

标签: android android-intent sd-card actionview

我正在制作一个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 个答案:

答案 0 :(得分:9)

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

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

看看这两个链接..

  1. openintents

  2. Android-File-Explore

答案 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