三星Galaxy S3没有SD卡,我正在使用此代码来检查存储状态。
使用此代码:
boolean mExternalStorageAvailable = false;
boolean mExternalStorageWriteable = false;
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
// We can read and write the media
mExternalStorageAvailable = mExternalStorageWriteable = true;
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
// We can only read the media
mExternalStorageAvailable = true;
mExternalStorageWriteable = false;
} else {
// Something else is wrong. It may be one of many other states, but all we need
// to know is we can neither read nor write
mExternalStorageAvailable = mExternalStorageWriteable = false;
}
所以也许有人可以向我解释,如果这款手机出于某种原因将其内部存储器视为外部存储器?或者是什么?
答案 0 :(得分:12)
getExternalStorageDirectory并不总是返回SD卡。
Google doc说:
“不要在这里混淆”外部“这个词。这个目录可以 最好被认为是媒体/共享存储。它是一个可以的文件系统 保存相对大量的数据,并在所有数据中共享 应用程序(不强制执行权限)。传统上这是一个 SD卡,但它也可以作为内置存储器实现 与受保护的内部存储区别的设备,可以是 作为文件系统安装在计算机上。“
“/ mnt / sdcard”可能会引用手机的内置存储空间。
最好从getExternalStorageDirectory
方法检查返回路径,无论它是否是外部可移动存储。
您可以使用Environment.isExternalStorageRemovable()进行检查。
答案 1 :(得分:2)
Android将始终将一个已安装的硬件内存(如果有)报告为外部存储。
记忆可以是:
设备甚至可以兼得,但Android只报告一个(主要是内部一个)。
获取adb shell mount
所在位置的简单方法。
rootfs on / type rootfs (ro)
tmpfs on /dev type tmpfs (rw,nosuid,mode=755)
devpts on /dev/pts type devpts (rw,mode=600)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
tmpfs on /mnt/asec type tmpfs (rw,mode=755,gid=1000)
tmpfs on /mnt/obb type tmpfs (rw,mode=755,gid=1000)
/dev/block/mtdblock2 on /system type yaffs2 (ro)
/dev/block/mtdblock3 on /data type yaffs2 (rw,nosuid,nodev)
/dev/block/mtdblock1 on /cache type yaffs2 (rw,nosuid,nodev)
/dev/block/vold/179:1 on /mnt/sdcard type vfat (rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)
/dev/block/vold/179:1 on /mnt/secure/asec type vfat (rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)
答案 2 :(得分:0)
使用此代码了解设备中是否有存储卡:
Boolean isSDPresent = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
if(isSDPresent)
{
// yes SD-card is present
}
else
{
// Sorry
}