Android问题解决--“StorageManager.getVolumeList NullPointerException”空指针再现,getExternalDirs

问题:

在获取外部存储目录时,在某些低版本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数组。

所以,上面的问题,应该发生在比较旧的设备上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liranke

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值