在jar中使用资源

时间:2014-01-07 15:56:01

标签: java android jar

如何在jar文件中使用drawable?

我尝试了什么,据我所知

  1. 我无法使用Library Project http://developer.android.com/tools/projects/index.html#LibraryProjects,因为该库将使用使用它的应用程序进行编译。我动态加载那个jar库,这样就不行了。
  2. 我可以使用Picture Style http://developer.android.com/reference/android/app/Notification.BigPictureStyle.html。但是我需要从我的库中的res目录创建一个位图。可能吗?
  3. 我知道我可以使用动态加载资源来实现。我宁愿不再使用动态加载(这个jar也是动态加载的)
  4. 更多信息 我有一个从系统服务动态加载的jar文件,我希望系统服务的所有代码都在该jar中。

    我想在系统服务中提供通知,为此我需要在jar中使用drawable。 我希望有一个res目录,就像每个应用程序一样,并且能够使用其中的png进行通知。

    感谢每一位帮助!

2 个答案:

答案 0 :(得分:1)

  

如何在jar文件中使用drawable?

JAR文件中没有可绘制的资源。 JAR中可能有图像文件,您可以尝试使用BitmapFactory加载。任何类型的资源都 编译到APK文件中。

  

我动态加载该jar库

从安全角度来看,这是危险的,除非您可以保证没有人可以从您检索它的任何地方替换该JAR文件。

  

但是我需要从我的库中的res目录创建一个位图。可能吗?

您可以使用BitmapFactory从JAR加载文件并将其解析为位图,然后您可以使用带有Bitmap对象的通知相关方法,如{{1}上的那些}}

  

我有一个从系统服务动态加载的jar文件

除非您在自己的ROM mod中创建自己的Android版本,否则您不会创建“系统服务”。

  

我希望有一个res目录,就像每个应用程序一样,并且能够使用其中的png进行通知。

然后不要动态加载JAR,而是在应用程序项目中包含代码(和资源)。

简而言之,JAR与Android资源没有任何关系。

答案 1 :(得分:0)

是。在开发Android的自动GUI生成任务时遇到了这个问题。 getResourcesAsStream(@CommonsWare)是一个很好的提示,但我认为它不应该应用于其中一个类,而应该应用于系统的类加载器。 E.g:

ClassLoader loader = ClassLoader.getSystemClassLoader();    字符串yourPathToFileInJar =“/ / / package / in / jar / fileInjar”;    InputStream url = loader.getResourceAsStream(yourPathToFileInJar);

请(不要@CommonsWare)避免这样的答案:当有人在Java世界中特别提出问题时,不要这样做。