2012-07-03 76 views
3

有沒有可能得到沒有getPackageManager的應用程序的versionCode?我的問題是,我想要一個沒有Activity的公共Configuration類,所以getPackageManager()不起作用。任何想法?Android getPackageInfo without getPackageManager

我當前的代碼:

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

appVersion = pinfo.versionCode; 

回答

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); 
+0

我不能只使用類似'NonActivityClass(this).appVersion'嗎? – Styler2go

+0

呃,那會實現什麼?我以爲你試圖從普通的類使用packageManager。你可以使用mContext.methodWhichYouUseInActivtiy();來調用你在Activites中使用的所有東西。 –

+0

也許我的想法是錯的..但我想盡可能快地調用appVersion(使用更少的代碼),但我需要經常調用它,所以如果我不需要聲明「new class」first ... – Styler2go

1

你必須向Context(最好使用getApplicationContext(),以防止意外的內存泄漏)的引用傳遞給大衆Configuration類。沒有其他方法可以檢索您的應用程序的versionCode。您必須使用PackageManager

1

使用下面的代碼來獲得當前應用的應用版本代碼:

public int getAppVersionCode() { 
    return BuildConfig.VERSION_CODE; 
} 
相關問題