允许用户在Android中选择保存文件的路径

允许用户在Android中选择保存文件的路径,android,file,android-file,Android,File,Android File,我正在为我们的客户开发一个应用程序,有一个小功能我们遇到了困难,所以需要您的帮助 场景:我们开发了一个循环视图,用户可以从中按类别查看图像、歌曲和视频列表,现在用户可以选择查看或收听图像、音频或视频,还可以选择下载 需要帮助@我们使用了一个静态路径,用户可以在其中保存所有文件,但我们的客户端希望允许用户选择保存文件的路径,为此,我们需要一个文件对话框,用户可以从中选择位置 注意:伙计们注意到,对于一个静态路径,我们已经完成了这项工作,它工作得非常好,而且我们正在本地数据库中存储该路径,以便以后使

我正在为我们的客户开发一个应用程序,有一个小功能我们遇到了困难,所以需要您的帮助

场景:我们开发了一个循环视图,用户可以从中按类别查看图像、歌曲和视频列表,现在用户可以选择查看或收听图像、音频或视频,还可以选择下载

需要帮助@我们使用了一个静态路径,用户可以在其中保存所有文件,但我们的客户端希望允许用户选择保存文件的路径,为此,我们需要一个文件对话框,用户可以从中选择位置

注意:伙计们注意到,对于一个静态路径,我们已经完成了这项工作,它工作得非常好,而且我们正在本地数据库中存储该路径,以便以后使用,所以现在剩下的是我们如何允许用户选择保存文件的位置?

我认为这有助于您选择文件保存的目录

清单

您需要声明
目录选择活动
并请求
android.permission.WRITE\u EXTERNAL\u STORAGE
权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
...
<application>
    <activity android:name="net.rdrei.android.dirchooser.DirectoryChooserActivity" />
</application>
在您的
onActivityResult
方法中处理结果:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == REQUEST_DIRECTORY) {
        if (resultCode == DirectoryChooserActivity.RESULT_CODE_DIR_SELECTED) {
            handleDirectoryChoice(data
                .getStringExtra(DirectoryChooserActivity.RESULT_SELECTED_DIR));
        } else {
            // Nothing selected
        }
    }
}

发布帖子-我已经检查过了,但它是文件选择器而不是位置选择器,我不必选择文件,我必须选择文件可以存储的位置好问题。据我所知,您需要搜索特定存储(内部/外部)上的文件夹列表。然后在选择该文件夹时,您需要再次列出其中的文件夹。你可以这样做。我已经为你们找到了榜样,但不确定它是否有效@ShabbirDhangot谢谢,目前我正在寻找唯一的,甚至我正在考虑使用文件浏览器,在那里我可以应用一些逻辑,只选择文件夹而不是文件,也让我检查一下你的链接,我也成为了一名摄影师:D所以使用局域网选项,我将图像传输到我的移动设备上,当我在上班的路上,查看并在instagram上分享,最近我发现需要批量修改图像,在几天内进行了大量搜索和尝试,如果不研究.net win app,只需2小时,我编写了选择文档,加载所有文件,修改文件,但我找不到保存文件的方法,此外,所有关于将uri转换为绝对通行证的资源,对于所有平台,对我来说都失败了,我想知道还有多少应用程序运行良好。这对我也有帮助。感谢您对SharingTanks的帮助,我花了一些时间根据需要进行了一些更改,但效果良好…如何请求在所选目录中创建新文件?
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == REQUEST_DIRECTORY) {
        if (resultCode == DirectoryChooserActivity.RESULT_CODE_DIR_SELECTED) {
            handleDirectoryChoice(data
                .getStringExtra(DirectoryChooserActivity.RESULT_SELECTED_DIR));
        } else {
            // Nothing selected
        }
    }
}