我的朋友正在测试我的应用程序,它使用SD卡存储一些设置。他拥有三星Galaxy S2,但他只是告诉我他的设备中没有SD卡。看起来设备在手机的存储器中创建了一个模拟SD卡存在的文件夹,这是所有使用SD卡的应用程序文件存储的地方。Android。没有SD卡可用
此功能是否适用于所有Android设备?我应该考虑一个设备上没有SD卡的事实,或者我应该不打扰吗?不知道我是否应该在我的应用程序中检查SD卡的可用性。
P.S.我刚刚注意到,如果我没有为SD卡指定内存,模拟器也是如此。
我的朋友正在测试我的应用程序,它使用SD卡存储一些设置。他拥有三星Galaxy S2,但他只是告诉我他的设备中没有SD卡。看起来设备在手机的存储器中创建了一个模拟SD卡存在的文件夹,这是所有使用SD卡的应用程序文件存储的地方。Android。没有SD卡可用
此功能是否适用于所有Android设备?我应该考虑一个设备上没有SD卡的事实,或者我应该不打扰吗?不知道我是否应该在我的应用程序中检查SD卡的可用性。
P.S.我刚刚注意到,如果我没有为SD卡指定内存,模拟器也是如此。
你一定要检查SD卡的可用性。在某些设备上它可能工作(如你所说),但在某些设备上不行,你可能会得到FileNotFoundException。
所以这是值得检查。
你有多确定?你有没有经历过这样的错误? – AndreiBogdan 2012-08-08 08:04:26
100%肯定。这是因为外部存储器有路径,例如/ mnt/sdcard/.....现在,如果尝试访问该路径,例如尝试在该处保存某些内容,将无法找到该路径,因为外部存储器丢失。所以Android会告诉你:“对不起兄弟,但我找不到路径”,通过抛出FileNotFoundException以更简洁的方式。 – 2012-08-08 08:16:19
我没有提到我使用SharedPreferences类来存储我的数据。这会改变什么吗? – AndreiBogdan 2012-08-08 08:19:53
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
}
如果没有可用的SD卡,但文件夹可用...它仍然显示为真? – AndreiBogdan 2012-08-08 08:08:45
没有SD卡是外部存储器,所以它只会检查它 – Furqi 2012-08-08 08:10:19
因此,这只会检测一个物理卡是否可用,而不是某些设备似乎有的模拟文件夹... :( – AndreiBogdan 2012-08-08 08:11:37
再加上有,只是没有SD卡插槽的设备。像Galaxy Nexus ... – 2012-08-08 07:58:39