0

我检查外部存储是否已安装并可用于读/写,然后我从中读取。我正在使用确切的官方 Android 示例代码(来自此处)。

它说没有安装外部存储。getExternalFilesDir(null)返回null

首先,我使用没有插入外部 SD 卡(但内部有大存储空间)的 HTC One V 体验了它。

现在,我在 WayteQ xTAB-70dci 平板电脑上遇到了同样的情况,它有一个巨大的“内部 SD 卡”(这就是平板电脑的名称),但没有插入外部 SD 卡。

在这两种情况下,标准 Android API(getExternalStorageState()getExternalFilesDir())都返回 false。

我完全受够了。显然,为我的应用程序(具有大量图形的游戏)付费的用户会期望它能够正确安装在具有巨大内部 SD 卡(如 WayteQ)的手机/平板电脑上。

这里有什么问题?为什么这些设备(HTC、WayteQ,加油!)指向 ext SD 卡(通常默认情况下从产品中丢失)而不是它们巨大的内部 SD 存储?绝对不合逻辑,甚至有害。我该怎么办,有标准的解决方法吗?

4

1 回答 1

1

如前所述,这取决于设备制造商。我确实相信三星在他们的手机上使用内部/外部存储点的诡计。

除了检查外部是否可用之外,您还必须检查/data目录大小以查看是否可以在内部部分缓存您的应用程序。见这里。由于文件大小限制,我假设您无论如何都在按要求下载应用程序的其余部分,对吧?

奖励信息:这不应该真的打扰你,但作为一个优秀的开发人员,你也可以考虑到这一点。有些人使用 CronMod 脚本将不同的文件夹挂载到外部存储下。所以他们有更多的空间。太好了,对吧?当您使用不同的版本并且/data/data在 SD 上(在手机上显示为更大的内部存储器)但/data/cache仍然在内部以提高速度时,就会出现问题。突然之间,您可能没有关于可用缓存内部大小的真实、硬数据。但是话又说回来,这主要是由高级用户完成的,他们应该对发生的事情有所了解。

于 2013-05-24T19:35:00.377 回答