gpt4 book ai didi

Android - 应用程序的附加主题(图像、声音等)

转载 作者:搜寻专家 更新时间:2023-11-01 09:12:22 24 4
gpt4 key购买 nike

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

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

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

根据所选主题,我希望我的原始插件和新插件都可以在应用中访问。

谢谢。

最佳答案

在我开始实现之前,让我先回答你的问题:)

1) 不。 .apk 文件一旦创建就无法修改其内容。这是因为该应用程序经过数字签名以防止恶意代码在应用程序内标记自身。2) 因此,您有两个选项来存储任何自定义插件。 1) External Storage (ie the user's SD Card) or internal storage (ie the phone memory) 每个应用程序至少有两个我知道在手机内存中的文件夹,一个是数据库(这就是为什么你可以修改sqllite数据库),另一个用于通用文件。由于这些文件在编译时不是“已知”的,因此您无法通过 R.drawable 访问它们。3) 好吧,鉴于以上信息,我认为您可能想要表格中的图像名称:)

那么,现在让我们在这里更具体一点。我只是想抛出一些关于如何实现这个项目的粗略想法。当然,您可以根据自己的需要随意调整它。

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

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

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

-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 用于在应用程序之间发送数据,在持久数据存储方面确实无效。 ;)

关于Android - 应用程序的附加主题(图像、声音等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7369104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com