java - 在 Android 应用程序中使用 Jar 时读取我自己的 Jar 的 list

标签 java android jar classloader manifest.mf

我有一个在我的 Android 应用程序中使用的 Jar(它在 libs 文件夹中)。 Jar 不包含任何 Android 资源或类似的东西,而只是简单的 Java 类。

现在,我希望 Jar 知道它当前在 list 中的版本,以便在 Jar 中发生异常时,我知道是哪个 Jar 版本导致了异常。

不知为何,我好像做不到... 我看过这个similar question和许多其他人,虽然当我在一个简单的 Java 应用程序中使用 Jar 时这有效,但在 Android 应用程序中使用时却不起作用。 我已经尝试通过这样做来获取 list

Thread.currentThread().getContextClassLoader().getResources("META-INF/MANIFEST.MF");

或者这个

MyClass.class.getClassLoader().getResources("META-INF/MANIFEST.MF");

但我从来没有得到我的 jar 的 list 。

任何帮助将不胜感激。

最佳答案

我将它放在我的子类 android.app.Application 中,但您可以在任何有上下文的地方使用它。只需将 getPackageManager() 更改为 context.getPackageManager()。

public int getVersion() {
    int v = 0;
    try {
        v = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;
    } catch (NameNotFoundException e) {
        // Huh? Really?
    }
    return v;
}

您可以使用上述方法从 list 中获取应用程序的版本。

关于java - 在 Android 应用程序中使用 Jar 时读取我自己的 Jar 的 list ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12970476/

相关文章:

java - Recyclerview 有条件点击

java - 尝试运行 jar 时出现 HttpClient java.lang.NoSuchMethodError

android - 我可以使用任何 jar 文件从 Twitter 获取个人资料信息吗?

Android UDP 点对点网络通信(无服务器)

java - 从 ListView 中删除所选项目不起作用

gradle - Gradle:如何将POM文件复制到WAR?

java - 在eclipse java web应用程序中引用特定资源的url

java - 错误 E/BitmapFactory:无法解码流:java.io.FileNotFoundException::open failed:ENOENT(没有这样的文件或目录)

java - JSCH addIdentity 公钥参数没有区别

java - 将for循环转换为递归方法java