java - 外部存储并不指大容量内部 SD 卡

标签 java android android-external-storage

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

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

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

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

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

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

这里出了什么问题?为什么这些设备(HTC、WayteQ,来吧!)指向外部 SD 卡(产品默认情况下通常缺少该卡)而不是其巨大的内部 SD 存储空间?绝对不合逻辑,甚至有害。我能做什么,有标准的解决方法吗?

最佳答案

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

除了检查外部是否可用之外,您还必须检查 /data 目录大小,以查看是否可以在内部部分缓存您的应用程序。请参阅here 。我假设由于文件大小限制,您无论如何都会根据请求下载应用程序的其余部分,对吗?

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

关于java - 外部存储并不指大容量内部 SD 卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16741890/

相关文章:

android - 作业计划程序未在 Android 12 上锁定/直接启动时启 Action 业

android - Firebase 用户 ID 可以更改吗?

android -/sdcard/emulated/0 和/sdcard 之间的差异

Android Kotlin - 将 jsonArray 转换为 Array<String>

android - 这个方法的作用 isExternalStorageRemovable 和 isExternalStorageEmulated

android - 在卸载 Android 2.3 时删除应用程序外部文件

java - 如何通过管道()按键分组的 RDD?

java - android中的文本框错误

java - 如果 for every 循环中声明的变量将在 foot 循环之外打印怎么办?

java - 如何更改 Struts 2 中 struts.xml 的默认位置?