Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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 没有getPackageManager的Android getPackageInfo_Java_Android - Fatal编程技术网

Java 没有getPackageManager的Android getPackageInfo

Java 没有getPackageManager的Android getPackageInfo,java,android,Java,Android,是否有可能在没有getPackageManager的情况下获取应用程序的版本代码?我的问题是,我想要一个没有活动的公共配置类,因此getPackageManager()无法工作。有什么想法吗 我当前的代码: PackageInfo pinfo; try { pinfo = getPackageManager().getPackageInfo(getPackageName(), 0); } catch (NameNotFoundException e1) { // TODO Aut

是否有可能在没有getPackageManager的情况下获取应用程序的版本代码?我的问题是,我想要一个没有活动的公共配置类,因此getPackageManager()无法工作。有什么想法吗

我当前的代码:

PackageInfo pinfo;
try {
    pinfo = getPackageManager().getPackageInfo(getPackageName(), 0);
} catch (NameNotFoundException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    pinfo = null;
}

appVersion = pinfo.versionCode;

您必须将对
上下文的引用(最好使用
getApplicationContext()
,以防止意外的内存泄漏)传递给public
配置
类。没有其他方法可以检索应用程序的
versionCode
。您必须使用
PackageManager

在非活动类的构造函数中获取一个实例,并使用该实例调用所有此类方法

大概是这样的:

public class NonActivityClass implements SensorListener{
Context mContext;
public NonActivtiyClass(Context context) {
this.mContext = context;
}
//Rest of your code
}
然后执行此操作以在Activtiy的
onCreate()中创建该类的对象。


使用以下代码获取当前应用的应用版本代码:

public int getAppVersionCode() {
    return BuildConfig.VERSION_CODE;
}

我不能使用类似于
非活动类(this.appVersion
)的东西吗?嗯,那会实现什么?我以为你是在用普通类的packageManager。您可以使用mContext.methodwhichyouuseinactiovtiy();,调用活动中使用的所有内容;。也许我的想法是错的。。但是我想以尽可能快的速度(用更少的代码)调用appVersion,但是我需要经常调用它,所以如果我不需要先声明一个“新类”,那就太好了……使用我在onCreate()方法中给你的代码,然后在你想调用appVersion时使用nac.yourMethodName();请记住,只有在onCreate()中运行该行代码后才能调用该方法。如果您之前调用它,那么您将在mContext变量上得到一个NullPointerException。
public int getAppVersionCode() {
    return BuildConfig.VERSION_CODE;
}