12

我有一个下载大量内容的应用程序(它因用户而异,但可能是 200mb 到 1GB 或更多)。

目前我将所有这些内容保存在外部存储上,因为这可能是空间最多的区域,例如 SD 卡。这在大多数情况下都可以正常工作,但是在某些情况下这不一定是理想的。

如果设备像大多数平板电脑一样具有内置外部存储,但也有 SD 卡插槽,则外部存储问题会变得有点复杂。该应用程序可以安装到 SD 卡上,但内容将保存在内置存储中,而不是外部 SD 卡上。

如果应用程序安装在 SD 卡上,调用会getFilesDir()给出 SD 卡或内部存储上的路径吗?

处理这个问题的最佳方法是什么?我应该将内容保存到内部存储(在 sd 卡上)、外部存储还是在启动应用程序时询问用户最好的主意?

4

2 回答 2

7

该应用程序可以安装到 SD 卡上,但内容将保存在内置存储中,而不是外部 SD 卡上。

否。如果设备有外部存储,应用程序将安装到外部存储。设备是否也有 SD 卡并不重要。

如果应用程序安装在 SD 卡上,调用 getFilesDir() 会给出 SD 卡或内部存储上的路径吗?

getFilesDir()始终是内部存储,无论应用程序安装在何处。

于 2012-05-08T11:27:22.210 回答
1

如果应用程序安装在 SD 卡上,调用 getFilesDir() 会给出 SD 卡或内部存储上的路径吗?

类中的No.getFilesDir()方法Context总是返回内部存储的路径(在 Android 术语中)。

在大多数情况下,返回的目录路径getFilesDir()/data/data/your.application.package.appname/files. 但它可能会因不同的手机、不同的 Android 版本而异。

要将您的应用程序文件存储在 SD 卡中,您可以在课堂上使用File[] getExternalFilesDirs (String type)方法。Context通常,第二个返回路径是 microSD 卡(如果有)的存储路径。

在我的手机上,返回的第二条路径是在作为参数/storage/sdcard1/Android/data/your.application.package.appname/files传递之后nullgetExternalFilesDirs (String type)

根据 Google/官方 Android 文档的内部和外部存储术语与我们的想法有很大不同。

于 2016-08-01T16:03:32.787 回答