2015-10-04 182 views
0

我正在制作一个教育应用程序,并希望我的用户能够选择他们想要的软件包并仅将该软件包下载到设备。所以基本上,我的应用程序有一个“数据”文件夹。如果用户选择一个包装表示“信号和系统”,我的应用程序应该将其从http服务器下载到设备上的一个私有位置,然后我的应用程序可以将数据呈现给用户。 (可下载的内容是20-30 MB,所以我想要下载到外部存储如果可能或内部但任何方式应该是私人的应用程序)Android文件存储选项 - 外部+内部

现在,我浏览了谷歌文档,似乎数据可以保存在内部存储器或外部存储器中。我不明白的是外部记忆是什么意思? 如果我编写我的应用程序使用外部存储器,并且如果用户选择将我的应用程序安装在内部存储器中,是否必须重写代码以从内部存储器获取数据?

编辑1

我得到的回答到,但现在我有一个不同的问题。如果我想在APK中放置一些文件,我将它们导入到Android Studio资产文件夹中。但是,现在我想在APK之外放置一些文件,但是会打包APK。即我的文件应该与APK一起下载到私人存储位置。我怎么做?我该如何设置Android Studio?

+0

检查你的问题的更新答案。此外,用新问题更新您的问题并不是一个好主意。如果您的问题很重要,请另外创建一个问题。可以在评论中询问微不足道的查询。 –

+0

也通过了提问的[tour](http://stackoverflow.com/tour)和[guidelines](http://stackoverflow.com/help/how-to-ask)。 –

回答

0

的Android拥有的内存3个大类:

  1. 系统:用于OS
  2. 内部:用于应用程序的安装和应用程序的私有数据
  3. 外部:用于存储文件和或者可能是应用程序(这可以是SD卡)

您可以选择内部和外部来存储您的应用程序数据。

默认情况下,您的应用将安装在内部存储器上,用户可以将其移动到外部存储器上。

任何这些都不会影响您的数据存储实施,您无需重写任何代码。

也看看this

更新:

回答您的问题更新,你可以保留任何所需的文件的资产,它会与你的APK捆绑在一起。

检查this document

主/资产/

这是空的。您可以使用它来存储原始资产文件。 您在此处保存的文件将按原样编译为.apk文件,并保留原始文件名 。您可以使用 导航此目录的方式与使用URI的典型文件系统相同,并使用AssetManager将文件读取为 字节流。例如,对于纹理和游戏数据而言,这是一个很好的 位置。

+0

谢谢,我现在明白了。我会选择第三种方式。但现在,我想在外部存储中放置一个虚拟文件,并希望我的应用程序为了测试目的而读取它。我如何在android studio中做到这一点? – azmath

+0

谷歌搜索有很多教程用于在外部存储上阅读,编写和创建文件 –

+0

我在问是否可以**手动**通过Android Studio IDE放置文件,以便在应用程序安装在测试中设备,它会使用getExternalFilesDir()和进程加载文件。有许多教程通过代码从外部存储读取和写入,我会在应用程序中使用它们。但现在,我只想通过放置一个虚拟文件来进行测试。 – azmath