有人知道完整的" Select 文件"对话框吗?也许你可以用过滤将除特定扩展名以外的所有文件用过滤转出?

我还没有发现任何轻量级的东西可以轻松地实现到我的一个项目中.唯一的其他选项似乎是使用OI FileManager的开放意图,但这需要用户已经安装了文件管理器.

如果有人能指出一个对话框,允许用户浏览文件夹和 Select 文件,并返回路径,我将不胜感激.

推荐答案

你只需要在一个活动中覆盖onCreateDialog.

//In an Activity
private String[] mFileList;
private File mPath = new File(Environment.getExternalStorageDirectory() + "//yourdir//");
private String mChosenFile;
private static final String FTYPE = ".txt";    
private static final int DIALOG_LOAD_FILE = 1000;

private void loadFileList() {
    try {
        mPath.mkdirs();
    }
    catch(SecurityException e) {
        Log.e(TAG, "unable to write on the sd card " + e.toString());
    }
    if(mPath.exists()) {
        FilenameFilter filter = new FilenameFilter() {

            @Override
            public boolean accept(File dir, String filename) {
                File sel = new File(dir, filename);
                return filename.contains(FTYPE) || sel.isDirectory();
            }

        };
        mFileList = mPath.list(filter);
    }
    else {
        mFileList= new String[0];
    }
}

protected Dialog onCreateDialog(int id) {
    Dialog dialog = null;
    AlertDialog.Builder builder = new Builder(this);

    switch(id) {
        case DIALOG_LOAD_FILE:
            builder.setTitle("Choose your file");
            if(mFileList == null) {
                Log.e(TAG, "Showing file picker before loading the file list");
                dialog = builder.create();
                return dialog;
            }
            builder.setItems(mFileList, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    mChosenFile = mFileList[which];
                    //you can do stuff with the file here too
                }
            });
            break;
    }
    dialog = builder.show();
    return dialog;
}

Android相关问答推荐

java.lang. IllegalState异常:CompositionLocal LifecycleOwner不存在

如何使用DeliveromManager.placeCall()删除已拨打的呼叫?

如何在Android Room中使用@Relation多对一查询

在Android的Whatsapp中共享多个图片和文本

如何go 除回调流中不可用的状态?

关闭导致Kotlin中的内存泄漏?

这款应用与最新版本的Android不兼容.在Android 14中

Android Compose Pages 3-一次加载所有页面,无需在LazyColumn中滚动,无需网络调用和内部滚动

如何使用进度条和返回函数进行API调用,同时在Android上使用Kotlin保持高效?

在内部创建匿名对象的繁忙循环调用函数会产生开销吗?

为什么我在 android 中使用 TabLayout 时无法启动我的 Activity?

单击按钮时不显示 Toast 消息

从 HiltViewModel @Injection 访问 Application()

如何在 Jetpack Compose 中创建无限pager

如何使用 Jetpack Compose 制作两个圆圈

Jetpack 组合千位分隔符视觉转换,也适用于小数

Jetpack Compose 中的滑动按钮菜单

如何从日期 Select 器计算年龄?

房间创建三四表关系

Android - 水平(从右到左)圆形背景 colored颜色 过渡