Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 读我自己的罐子';在Android应用程序中使用Jar时_Java_Android_Jar_Classloader_Manifest.mf - Fatal编程技术网

Java 读我自己的罐子';在Android应用程序中使用Jar时

Java 读我自己的罐子';在Android应用程序中使用Jar时,java,android,jar,classloader,manifest.mf,Java,Android,Jar,Classloader,Manifest.mf,我在Android应用程序中使用了一个Jar(在libs文件夹中)。 Jar不包含任何Android资源或类似的东西,只包含简单的Java类 现在,我想让Jar知道它当前在清单中的版本,以便在Jar中发生异常的情况下,我知道是哪个版本的Jar导致了异常 由于某种原因,我似乎无法做到这一点。。。 我已经看到了这一点和许多其他的,当我在一个简单的Java应用程序中使用Jar时,这一点是有效的,但在android应用程序中使用Jar时却不起作用。 我试着通过这样做来获取舱单 Thread.curren

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

现在,我想让Jar知道它当前在清单中的版本,以便在Jar中发生异常的情况下,我知道是哪个版本的Jar导致了异常

由于某种原因,我似乎无法做到这一点。。。 我已经看到了这一点和许多其他的,当我在一个简单的Java应用程序中使用Jar时,这一点是有效的,但在android应用程序中使用Jar时却不起作用。 我试着通过这样做来获取舱单

Thread.currentThread().getContextClassLoader().getResources("META-INF/MANIFEST.MF");
还是这个

MyClass.class.getClassLoader().getResources("META-INF/MANIFEST.MF");
但是我从来没有得到我的罐子的清单

任何帮助都将不胜感激。

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


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

虽然您可能可以获取APK的版本,但不清楚如何获取jar的版本,因为jar在编译包中不能作为一个独立的实体存在。你能把它作为某种常量字段嵌入吗?
public int getVersion() {
    int v = 0;
    try {
        v = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;
    } catch (NameNotFoundException e) {
        // Huh? Really?
    }
    return v;
}