TOP*_*TOP 9 android android-sdcard android-external-storage
我的应用在Android 5.0上运行.我用方法getExternalFilesDirs()来检查外部SD卡是否可用.如果返回超过1 File,则表示存在外部SD卡.
但是在某些设备(例如Elephone G2)上,方法getExternalFilesDirs()只返回一个主存储目录.我确定该设备有外部SD卡(/ storage/sdcard1 /).
任何人都可以给我答案吗?
som*_*esh 13
要使getExternalFilesDirs返回sdcard的路径,OEM必须SECONDARY_STORAGE在设备特定的init.rc文件中设置环境变量,如下所述:https://source.android.com/devices/storage/config-example.html
看看源getExternalFilesDirs位置:
http://androidxref.com/5.1.1_r6/xref/frameworks/base/core/java/android/app/ContextImpl.java#1039
该值来自Environment.buildExternalStorageAppFilesDirs.你看那个源位置:
http://androidxref.com/5.1.1_r6/xref/frameworks/base/core/java/android/os/Environment.java#206
该值取决于mExternalDirsForApp,通过读取SECONDARY_STORAGE变量的内容来填充:http:
//androidxref.com/5.1.1_r6/xref/frameworks/base/core/java/android/os/Environment.java#136
如您所见,如果未设置SECONDARY_STORAGE变量,则不会返回sdcard路径.您可以通过转到adb shell并查看输出来交叉检查echo $SECONDARY_STORAGE
在我使用此代码的项目中,我没有任何问题.
getExternalFilesDirs的方法返回2个长度的数组.
Dirs[0] ==> Internal Sorage
Dirs[1] ==> External Storage
File[] Dirs = ContextCompat.getExternalFilesDirs(MyApp.GetContext(), null);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11321 次 |
| 最近记录: |