Android - APP的附加主题(图像,声音等)

时间:2011-09-10 01:48:32

标签: android android-contentprovider add-on

我是Android开发的新手,对大多数人来说可能是一个简单的问题,但似乎无法在互联网上找到答案。

如果我想为我构建的应用程序提供包含新图像和声音的附加软件包,那么最佳解决方案是什么。我试着阅读内容提供商,但问题多于答案。我几乎没有问题:

  • 这些图片可以动态放入原始App的资源/可绘制文件夹吗?
  • 如何访问这些新图片? R.drawable会工作吗?
  • 如果我使用SQLite存储信息,我应该存储到实际图像或图像名称还是R.drawable id?

根据所选主题的不同,我希望可以在应用中访问我的原始加载项和新加载项。

感谢。

1 个答案:

答案 0 :(得分:3)

在开始实施之前,请先回答你的问题:)

1)不。创建后,您无法修改.apk文件的内容。这是因为应用程序经过数字签名,以防止恶意代码在应用程序内标记自己。 2)因此,您有两个选项来存储任何自定义插件。 1)外部存储(即用户的SD卡)或内部存储(即手机内存)每个应用程序至少提供两个我知道的手机内存文件夹,一个用于数据库(这就是为什么你可以修改sqllite数据库),另一个是通用文件。由于这些文件在编译时未“已知”,因此无法通过R.drawable访问它们。 3)嗯,鉴于上面的信息,我认为你可能想要表格中的图像名称:)

所以,现在让我们更具体一点。我只是想对如何实现这个项目提出一些粗略的想法。当然,请随意根据您的需要进行调整。

对于初学者,我会决定在哪里找到插件。每个地方都有起伏。如果插件存储在本地内存中,无论用户是否有SD卡,您的主题都将可用。但另一方面,许多用户似乎抱怨占用大量手机内存空间的应用程序,即使有时他们是那些下载了额外吨的人。使用SD卡的方式,您应该在手机内存中保留对默认主题或基本插件的引用,这样如果他们的SD卡无法安装或者没有安装,那么至少有一些东西。在尝试从那里加载任何东西之前,请确保先检查SD卡是否存在。将它放在SD卡上的好处是用户可以直接从他们的计算机上下载插件并直接将它们放入app文件夹。我个人会推荐这种方式,但请确保您的Android Manifest文件包含该权限,否则! :)

需要注意的是,移动到SD卡的应用程序(Android 2.2中的一项功能)与将文件放在SD卡上之间存在差异。移动到SD卡的应用程序仍然可以以相同的方式访问“内部存储”,但实际位置在SD卡上。起初我很难理解,移动到SD卡的应用程序的功能与手机内存中的相同。重要的是要了解您是否计划将所有内容保存在手机内存中,因为Android 2.1用户可能会抱怨大尺寸,而2.2用户可以将其移动到SD卡。 (这也是你应该在android清单文件中设置的)

另外需要考虑的是如何引用每个主题。首先,谁将制作这些插件?任何有兴趣制作插件的人都可以访问模板吗?如果您希望插件系统更加公开,那么您可能希望对存储具有目录结构类型感觉

-themes
|
---MyTheme
|
-----icon.jpg
-----blah.mp3
----- ... and so forth

使用它可以强制执行严格的命名约定,也可以允许任何想要的名称,但要求它们将它列在您要解析的XML文件中。我认为严格的命名系统是一种稍微好一点的方法。也许这仍然可以包含一个XML文件以获取额外信息(根据需要)无论哪种方式,它将在未来节省大量时间以保持插件整洁有序。

我现在真的有点累,因为它真的已经很晚了,但这里有一些很好的读物可以帮助你在这个问题上引导你朝着正确的方向前进。

http://developer.android.com/guide/topics/data/data-storage.html

http://www.helloandroid.com/tutorials/how-download-fileimage-url-your-device

http://www.jondev.net/articles/Unzipping_Files_with_Android_%28Programmatically%29

最后一个快速说明,ContentProvider用于在应用程序之间发送数据,并且在持久数据存储方面确实无效。 ;)