问题描述
我正在开发一个音乐播放器应用程序,允许用户将某些文件夹列入黑名单。这些文件夹中的音频文件将不会显示在应用程序中。
我在查询MediaStore.Audio.AudioColumns.DATA
的音频文件时使用MediaStore
列来过滤出那些文件夹中存在的音频文件。
我正在使用这种逻辑从uri构建一条完整的真实路径。
// Open folder picker
Intent intent = new Intent();
intent.setAction(Intent.ACTION_OPEN_DOCUMENT_TREE);
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivityForResult(intent,REQUEST_CODE_FOLDER_SELECT);
// Then in onActivityResult I am building the real path
Uri folder = data.getData();
String[] paths = Objects.requireNonNull(folder.getPath()).split(":");
// completePath looks like: /storage/emulated/0/Test/Another test
String completePath = Environment.getExternalStorageDirectory() +
(paths.length > 1 ? File.separator + paths[1] : "");
当前,这对于主外部存储中存在的文件夹可以正常使用。 但是我希望用户从外部(可移动)SD卡中选择文件夹。
我不确定如何为(可移动)SD卡中的文件夹构建真实的文件夹路径。
我遇到过很多关于“从uri获取一部分”的解决方案,但是其中大多数是在Android 10受到存储限制或仅适用于内部存储之前编写的。
我真正关心的是,不同的供应商拥有different的名称和可移动sdcard的安装路径,因此我无法对诸如“从uri的存储/ sdcard / {相对文件夹路径””进行硬编码。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)