微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从Android 10中的文档树Uri获取真实文件夹路径

如何解决从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 举报,一经查实,本站将立刻删除。