外部存储和HTC One V.

时间:2013-04-13 23:30:02

标签: java android storage

几个星期前我在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没有报告它是可用的。

1 个答案:

答案 0 :(得分:1)

我设计了application虽然不需要外部存储,但“外部存储”中的文件也可以使用。 Whatsapp也适用于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();
                }