java - 访问外部资源

标签 java android eclipse resources themes

所以我有一个 Android 应用程序,我正在为其编写多个主题(按钮等的不同背景可绘制对象)。我已将所有内容打包并正常工作,但我发现我的资源文件夹变得非常庞大。如此之多以至于它的足迹是我的源代码目录足迹的三倍。我在谷歌(和这里)上做了一些搜索,但找不到任何似乎合适的东西。我已经阅读了 api 文档,并且我也在那里出现了空值。所以这就是我在坚果壳中寻找的东西:

我想制作一些小包,其中包含用于此应用程序的资源文件。通过单独打包额外的资源图像,我可以显着减小应用程序的大小。如何访问外部资源文件?他们是判断设备上是否安装了这些“主题包”之一的可靠方法吗? (即,如果没有,则加载默认值。如果有,则在选项中显示。如果安装了多个主题包,则全部显示。)

最佳答案

一个非常简单的解决方案是让用户可以选择将其他主题直接下载到外部存储设备(主要是 SD 卡),如果他想使用它们的话。

只需在其中创建一个文件夹并将您的主题包放入其中,然后您只需检查文件夹中是否有内容并将选项提供给用户,等等。

市面上很多知名App也是这样做的。

编辑:

1:啊,我明白了。如果你想在其他 apk 中外包主题文件,你需要使用 PackageManager。使用它,您可以检索所有已安装应用程序的列表,例如检查 packageName 是否包含类似“.someapp.superdupertheme”的字符串,然后使用 getResourcesForApplication 访问应用程序的资源。它不像上面的外部存储那么容易,还有很多事情需要考虑。

2:为避免在 Android 媒体库中列出您的外部文件,只需将名为“.nomedia”的文件放入您的文件夹中,Android 媒体扫描器将忽略它。

关于java - 访问外部资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9749439/

相关文章:

java - web.xml : cvc-complex-type. 2.4.a 中出现错误:发现以元素 'context-root' 开头的无效内容

java - 完全按照离开时的方式进入应用程序

eclipse - 在 C/C++ 的 Eclipse IDE 中,什么键命令选择当前单词?

java - 从 Eclipse 插件运行 JUnit 测试并访问结果

java - Jhipster 4 中的角色

java - 在 Visual Studio Code 中运行 Java 程序时出现问题

java - 通过 Espresso 运行单元测试时,由于 'java.lang.ClassNotFoundException' 错误,仪器运行失败

java - 将顶点放入顶点缓冲区时出现 BufferOverFlowException

java - 为什么我会收到异常 : abstructmethoderror while calling setXmlStandalone() method in Java?

java - 如何跳出通过从另一个按钮单击一个按钮而启动的 for 循环