为啥 getExternalFilesDirs 根据使用的上下文返回不同的结果?
Posted
技术标签:
【中文标题】为啥 getExternalFilesDirs 根据使用的上下文返回不同的结果?【英文标题】:Why does getExternalFilesDirs return different results depending on which context is used?为什么 getExternalFilesDirs 根据使用的上下文返回不同的结果? 【发布时间】:2018-09-20 00:49:00 【问题描述】:这个很奇怪。我使用Context.getExternalFilesDirs
获取可移动SD 卡的路径。这在运行 android 6.0.1 的 LG X Power 上运行良好。但是,在 Android 6.0 上的 LG Spirit H440N 上,根据使用的上下文,它会给我不同的结果。如果我在
为什么我会根据调用方法的上下文得到不同的结果?权限在每种情况下的工作方式是否不同?
请注意,我已经在清单中列出了这两个权限:
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
【问题讨论】:
Why does getExternalFilesDirs return different results depending on which context is used?
奇怪的问题。你说它不适用于 LG X 电源。
Note that I've listed both permissions in the manifest:
无关。您不需要这些权限即可调用该函数。
感谢您非常有用的 cmets!
【参考方案1】:
是的,我也这么认为。我在使用 Redmi 设备时遇到了同样的问题。
application
和 applicationContext Context.getExternalFilesDirs(null)
只显示 1 个文件(内部存储),但当我使用 baseContext
和 FirebaseMessagingService context
时效果很好。
所以,我认为baseContext.getExternalFilesDirs(null)
对你有用。
【讨论】:
以上是关于为啥 getExternalFilesDirs 根据使用的上下文返回不同的结果?的主要内容,如果未能解决你的问题,请参考以下文章
getExternalFilesDir 和 getExternalStorageDirectory() 之间的区别
在 API 23 及更高版本中插入 SD 卡时,getExternalFilesDirs() 未在 ApplicationContext 中更新
android 各种存储目录使用总结之Context#getExternalFilesDir
Android存储及getCacheDir()getFilesDir()getExternalFilesDir()getExternalCacheDir()区别