几周前我在 HTC One V 上测试了我的应用程序。当我的应用程序在第一次运行时检查外部存储的可用性时,发现没有。 (我使用了 getExternalStorageState()
并根据结果,getExternalFilesDir(null)
)。
我阅读了相关的 stackoverflow 线程(和 Android 文档),因此我得出的结论是,任何支持 Google Play 的设备都必须提供某种外部存储(SD 卡或其他)。 Android 官方主页还暗示 getExternalFilesDir
必须始终返回有效位置(除非卸载或安装到 PC 等)。
允许我进行测试的 HTC One V 所有者告诉我,他的手机上没有任何 SD 卡。 (我知道外部存储也可以是其他内容,但正如您在上面看到的,标准 getExternalStorageState
调用返回没有,即它没有返回 HTC One V 的内部存储。)
如果我关闭应用程序的外部存储使用(而是依赖手机内存),One V 上一切正常。问题是,这是一款游戏,将大于 50MB,所以我被迫使用 Google 的 APK 扩展文件功能 - 这需要外部存储。
供应商/移动运营商是否有权销售不带外部存储(在本例中为不带 SD 卡)的手机?我知道这并不是一个真正的开发问题,但正如你所看到的,这里肯定出了问题。据我所知,One V 有一个很大的内部存储空间,所以我想知道为什么 getExternalStorageState
没有将其报告为可用。
最佳答案
我设计了一个application尽管不需要外部存储,但它可以处理“外部存储”中的文件。 Whatsapp 也可以在 HTC One V
上运行,因此显然您的代码有问题。
问题是,在我的应用程序中,尽管 minSdkVersion="8"
我没有使用 getExternalFilesDir(null)
。相反,我使用 getExternalStorageDirectory() ,这不是因为选择。我在开发应用程序时不知道 getExternalFilesDir()
函数。不过,该应用程序在 friend 的 HTC One V
上可以正常运行。所以我建议您使用getExternalStorageDirectory()
。
示例代码:
String mountStatus = Environment.getExternalStorageState();
if (mountStatus.equalsIgnoreCase("mounted")) {
Toast.makeText(MainActivity.this,
Environment.getExternalStorageDirectory().getAbsolutePath(), Toast.LENGTH_SHORT).show();
}
关于java - 外部存储和 HTC One V,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15994076/