如何解决从Android 10中的文档树Uri获取真实文件夹路径
我正在开发一个音乐播放器应用程序,允许用户将某些文件夹列入黑名单。这些文件夹中的音频文件将不会显示在应用程序中。
我在查询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 举报,一经查实,本站将立刻删除。