java - 外部存储和 HTC One V

标签 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,所以我被迫使用 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/

相关文章:

android - 如何获取外部存储 SD 卡大小(已安装 SD 卡)?

java - AsyncTask 到 Azure - 服务器无法对请求进行身份验证

java - 使用ByteStream读取UTF-8字符

android - 具有不同卡片布局的 RecyclerView

java - Facebook 连接异常

java - 无法在Android上的外部存储上创建文件夹

ios - 使用 parse.com 存储项目的最佳方式

Java 相当于 SSJS 中的 getComponent()

javascript - 在 Typescript 中使用 map

java - 内部类中公共(public)无参数构造函数的 NoSuchMethodException