2012-08-08 157 views
2

我的朋友正在测试我的应用程序,它使用SD卡存储一些设置。他拥有三星Galaxy S2,但他只是告诉我他的设备中没有SD卡。看起来设备在手机的存储器中创建了一个模拟SD卡存在的文件夹,这是所有使用SD卡的应用程序文件存储的地方。Android。没有SD卡可用

此功能是否适用于所有Android设备?我应该考虑一个设备上没有SD卡的事实,或者我应该不打扰吗?不知道我是否应该在我的应用程序中检查SD卡的可用性。

P.S.我刚刚注意到,如果我没有为SD卡指定内存,模拟器也是如此。

+0

再加上有,只是没有SD卡插槽的设备。像Galaxy Nexus ... – 2012-08-08 07:58:39

回答

1

你一定要检查SD卡的可用性。在某些设备上它可能工作(如你所说),但在某些设备上不行,你可能会得到FileNotFoundException。
所以这是值得检查。

+0

你有多确定?你有没有经历过这样的错误? – AndreiBogdan 2012-08-08 08:04:26

+0

100%肯定。这是因为外部存储器有路径,例如/ mnt/sdcard/.....现在,如果尝试访问该路径,例如尝试在该处保存某些内容,将无法找到该路径,因为外部存储器丢失。所以Android会告诉你:“对不起兄弟,但我找不到路径”,通过抛出FileNotFoundException以更简洁的方式。 – 2012-08-08 08:16:19

+0

我没有提到我使用SharedPreferences类来存储我的数据。这会改变什么吗? – AndreiBogdan 2012-08-08 08:19:53

1
String state = Environment.getExternalStorageState(); 

if (Environment.MEDIA_MOUNTED.toString().equals(
         state.toString())) { 

    //////then do your work here//////// 

} 

Boolean isSDPresent = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED); 

if(isSDPresent) 
{ 
    // yes SD-card is present 
} 
else 
{ 
// Sorry 
} 
+0

如果没有可用的SD卡,但文件夹可用...它仍然显示为真? – AndreiBogdan 2012-08-08 08:08:45

+0

没有SD卡是外部存储器,所以它只会检查它 – Furqi 2012-08-08 08:10:19

+0

因此,这只会检测一个物理卡是否可用,而不是某些设备似乎有的模拟文件夹... :( – AndreiBogdan 2012-08-08 08:11:37