0

几周前,我在 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,所以我被迫使用谷歌的 APK 扩展文件的可能性——这需要外部存储。

供应商/移动运营商是否有权销售没有外部存储(在这种情况下,没有 SD 卡)的手机?我知道这不是一个真正的开发问题,但正如您所看到的,这里一定有问题。据我所知,One V 有一个很大的内部存储,所以我想知道为什么getExternalStorageState不报告它可用。

4

1 回答 1

1

我设计了一个应用程序,它虽然不需要外部存储,但可以处理“外部存储”中的文件。Whatsapp 也适用于 a HTC One V,因此显然您的代码存在问题。

问题是,在我的应用程序中,虽然minSdkVersion="8"我没有使用getExternalFilesDir(null). 相反,我使用了 getExternalStorageDirectory(),这不是因为选择。在开发应用程序时我不知道该getExternalFilesDir()功能。但是,该应用程序在朋友的HTC One V. 所以我建议你使用getExternalStorageDirectory().

示例代码:

String mountStatus = Environment.getExternalStorageState();
                if (mountStatus.equalsIgnoreCase("mounted")) {
                    Toast.makeText(MainActivity.this,
                            Environment.getExternalStorageDirectory().getAbsolutePath(), Toast.LENGTH_SHORT).show();
                }
于 2013-04-14T05:16:57.463 回答