放置在Android

时间:2015-08-20 07:49:34

标签: android libgdx storage unzip

由于apk最大大小为50MB,我决定制作apk扩展文件。我知道我可以从这个包中获取任何文件(输入流),但我在LibGDX中工作,而且它没有从输入流加载纹理/音乐的选项。 所以,我必须提取文件,加载纹理/音乐然后我可以删除文件。 我认为我需要最多50MB的空间,我有两个选择:

UNZIP TO:

  1. ContextWrapper.getFilesDir() - 它返回内部文件,但我不知道可以解压缩多少个文件,因为此存储空间与所有应用程序共享。< / p>

  2. getExternalStorageDirectory() - 它返回外部文件,但根据网站(developer.android.com)&#34;此目录目前可能无法访问&#34;

  3. 哪个目录最适合解包,始终可用

2 个答案:

答案 0 :(得分:0)

如果您告诉我们,这里有大量数据,那么为了改善用户体验(并非所有手机都有大量内存并且使用内部存储可能导致您的应用程序被卸载),您应该使用{{3} }。

你必须关心几件事:

  • 添加读/写权限
  • 检查文件可用性启动应用

添加权限:

<manifest ...>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    ...
</manifest>

检查文件可用性
启动应用程序时,请小心并检查外部存储是否可用,否则显示消息以避免例外情况:

  

警告:如果用户在计算机上安装外部存储设备或删除介质,则外部存储设备可能不可用,并且对保存到外部存储设备的文件没有强制执行安全措施。所有应用程序都可以读取和写入外部存储器上的文件,用户可以将其删除。

答案 1 :(得分:0)

使用Context.getCacheDir()访问可以提取文件的私人目录。这应该被视为缓存目录,因此您应该在启动时检查文件并在缺少时再次提取它。

此方法不需要任何其他权限,更安全。此外,Android API保证目录存在。