安卓:目录和文件选择器安卓库

11

我在我的应用程序中使用了aFileChooser android库项目来选择外部存储中的文件。但它似乎不能只选择目录以让用户选择下载位置以下载文件。 是否有任何支持选择文件和目录的android库项目?

我知道这里已经回答了多个关于文件选择器或目录选择器的问题,但是经过广泛的搜索,我没有找到一个既支持目录选择器又支持文件选择器的解决方案。 任何帮助都将不胜感激。

1个回答

15

我没有安卓库项目,但是你可以使用下面的代码简单地制作自己的文件选择器。当你在文件浏览器中选择一个文件时,这段代码会要求你选择一个文件浏览器,并在onActivityResult函数中将文件路径存储在FilePath字符串中。

将此代码设置为公共:

private static final int ACTIVITY_CHOOSE_FILE = 3;

当按钮被点击时,您可以调用这个函数:

            Intent chooseFile;
            Intent intent;
            chooseFile = new Intent(Intent.ACTION_GET_CONTENT);
            chooseFile.setType("file/*");
            intent = Intent.createChooser(chooseFile, "Choose a file");
            startActivityForResult(intent, ACTIVITY_CHOOSE_FILE);

您可以使用以下代码获取目录:

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode != RESULT_OK) return;
        String path     = "";
        if(requestCode == ACTIVITY_CHOOSE_FILE)
        {
              Uri uri = data.getData();
              String FilePath = getRealPathFromURI(uri);

        }
    }

public String getRealPathFromURI(Uri contentUri) {
    String [] proj      = {MediaStore.Images.Media.DATA};
    Cursor cursor       = getContentResolver().query( contentUri, proj, null, null,null); 
    if (cursor == null) return null; 
    int column_index    = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
}

编辑: 如果你不想使用外部的文件浏览器,你可以将这个Android库导入到你的项目中: https://code.google.com/p/afiledialog/


1
感谢DeGoosseZ提供的代码...但是如果用户没有文件浏览器呢? - Prashant
当没有文件浏览器时,这种方法将无法工作。目前我不知道有哪个安卓库项目可以做到这一点。我会进行一些研究。 - DeGoosseZ
2
我还没有测试过这个,但它似乎有一个不错的“如何使用”:https://code.google.com/p/afiledialog/ - DeGoosseZ
是的,那听起来不错...我会试一下。非常感谢DeGoosseZ。 - Prashant
请将其标记为答案以供他人参考。不客气! - DeGoosseZ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接