4

getPackageManager なしでアプリの versionCode を取得する可能性はありますか? 私の問題は、アクティビティのないパブリック構成クラスが必要なため、getPackageManager() が機能しないことです。何か案が?

私の現在のコード:

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

appVersion = pinfo.versionCode;
4

3 に答える 3

2

(偶発的なメモリリークを防ぐために、Contextできればを使用して)パブリッククラスへの参照を渡す必要があります。アプリケーションのを取得する他の方法はありません。を使用する必要があります。getApplicationContext()ConfigurationversionCodePackageManager

于 2012-07-03T12:32:17.723 に答える
1

非アクティビティクラスのコンストラクターでContextのインスタンスを取得し、それを使用してそのようなすべてのメソッドを呼び出します。

このようなもの:

public class NonActivityClass implements SensorListener{
Context mContext;
public NonActivtiyClass(Context context) {
this.mContext = context;
}
//Rest of your code
}

次に、これを実行して、ActivtiyのonCreate():にそのクラスのオブジェクトを作成します。

NonActivityClass nac = new NonActivityClass(this);
于 2012-07-03T12:32:26.593 に答える