问题:
在获取外部存储目录时,在某些低版本Android手机上发生StorageManager.getVolumeList 空指针错误,具体如下:
Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'android.os.storage.StorageVolume[] android.os.storage.IStorageManager.getVolumeList(int, java.lang.String, int)' on a null object reference
at android.os.storage.StorageManager.getVolumeList(StorageManager.java:1267)
at android.os.Environment$UserEnvironment.getExternalDirs(Environment.java:109)
at android.os.Environment.getExternalStorageState(Environment.java:1026)
分析:
getExternalDirs作用是获取sdcard的目录,在Android低版本(4.4以前),sdcard目录是指设备插入的真正的可插拔存储卡的目录;
在高版本(Android4.4以后),由于手机的存储空器越来越大,即使没有插入外部存储卡,系统也会默认创建sdcard,如果有卡插入,getExternalDirs就会返回多个File数组。
所以,上面的问题,应该发生在比较旧的设备上。