Android - 安装在SD卡上的应用程序时的内部存储与外部存储

时间:2012-05-08 09:51:44

标签: android android-sdcard

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

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

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

如果应用程序安装在SD卡上,是否会拨打getFilesDir()在SD卡或内部存储空间中提供路径?

处理此问题的最佳方法是什么?我应该将内容保存到内部存储(在SD卡上),外部存储器还是在启动应用程序时询问用户最好的想法?

2 个答案:

答案 0 :(得分:6)

  

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

没有。如果设备具有外部存储,则应用程序将安装到外部存储。设备是否有SD卡无关紧要。

  

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

无论应用安装在何处,

getFilesDir()始终内部存储。

答案 1 :(得分:1)

  

如果应用程序安装在SD卡上,将调用getFilesDir()给出一个   SD卡上的路径,还是内部存储?

没有。 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作为null

的参数传递后,返回的第二条路径为getExternalFilesDirs (String type)

根据Google /官方Android文档,内部和外部存储术语与我们的想法相差甚远。