android - getExternalFilesDirs 不返回 SD 卡,仅返回内部/内置存储
问题描述
getExternalFilesDirs应该在内部存储和外部存储上返回我的应用程序的私有数据文件夹。在我所有的手机上这都能正常工作(各种 LG、三星和 Moto 手机,跨越版本 4.4 到 11),但在我的许多客户的手机上却没有,只有内部存储文件夹被返回(/storage/emulated/ 0 ...); 他们的 SD 卡丢失 (/storage/abc-123/...)。我将其归结为各种各样的手机制造商,但在一种情况下,客户的三星 S10 看不到 SD 卡,而我的 S10e 可以(都运行 android 10)。不幸的是,这些是游戏商店的客户,所以我无法实际调试这些问题。
那么这里发生了什么?为什么此方法无法在某些手机上包含 SD 卡,而在其他手机上则不包含?我尝试在循环中调用它,并且尝试从活动的上下文和应用程序的上下文中调用 { getApplicationContext().getExternalFilesDirs(null) } 并没有任何帮助,我总是得到相同的结果。我什至尝试过从 /storage 获取目录列表,但这也不起作用,包括在我的手机上。
我不认为这是 SAF 的问题,因为这是我的应用程序的数据文件夹,它始终是我的应用程序私有的,据我所知,即使在 android 12 中,您也可以使用 Java File api 访问您的私有数据文件夹。但请记住,这不是 File API 失败的问题,问题是 getExternalFilesDirs() 没有返回多个路径。
当然,这些相同的客户发誓其他应用程序可以看到他们的外部 SD 卡。当然,这些应用程序可能正在使用 SAF。但这仍然不能解释为什么 getExternalFilesDirs() 在几乎相同的硬件(三星 s10 与 s10e)上给出不一致的结果。
过去曾以各种形式提出过这个问题,但最近从未如此,而且自 2015 年以来发生了很多变化,所以当时的建议都不是相关的(当然,我已经阅读了所有这些帖子并尝试了所有内容)。此外,我的问题中的新问题是两部几乎相同的手机运行应该相同的软件版本的具体情况,一部具有 getExternalFilesDirs() 结果,包括 SD 卡,另一部则没有。所以我认为这值得一个新的职位。
解决方案
推荐阅读
- download - 如何使用 JMeter 测试 xlsx/csv 和其他文件的下载过程?
- javascript - 有没有办法在nodeJS中获取移动和删除操作的进度?
- python - AttributeError:“ImmutableDenseNDimArray”对象在尝试绘制多个方程时没有属性“could_extract_minus_sign”
- postgresql - Postgres 按条件排序
- c# - 通过 C# 中的 Microsoft Graph API 在 Microsoft 团队常规频道中发布消息时出现禁止错误
- php - Docker Nextcloud 无法加载 Collabora Online - 请稍后再试
- snowflake-cloud-data-platform - 为什么很少有 query_id 没有出现在 query_history 中?
- angular - 如何解码 base64 SVG 文件并将其用作 Angular 模板?
- redis - 使用 Redis 中的集合值选择某些哈希元素
- javascript - lodash pick:如果未设置键,则设置默认值