android:versionCode和android:versionName兩個欄位分別表示版本代碼,版本名稱。versionCode是整型數字,versionName是字串。versionName是給使用者看的,不太容易比較大小,升級檢查時,可以以檢查versionCode為主,方便比較出版本的前後大小。
在應用中如何讀取AndroidManifest.xml中的versionCode和versionName呢?可以使用PackageManager的API,參考以下代碼:
[html]
public static int getVerCode(Context context) {
int verCode = -1;
try {
verCode = context.getPackageManager().getPackageInfo(
"com.myapp", 0).versionCode;
} catch (NameNotFoundException e) {
Log.e(TAG, e.getMessage());
}
return verCode;
}
public static String getVerName(Context context) {
String verName = "";
try {
verName = context.getPackageManager().getPackageInfo(
"com.myapp", 0).versionName;
} catch (NameNotFoundException e) {
Log.e(TAG, e.getMessage());
}
return verName;
}
public static int getVerCode(Context context) {
int verCode = -1;
try {
verCode = context.getPackageManager().getPackageInfo(
"com.myapp", 0).versionCode;
} catch (NameNotFoundException e) {
Log.e(TAG, e.getMessage());
}
return verCode;
}
public static String getVerName(Context context) {
String verName = "";
try {
verName = context.getPackageManager().getPackageInfo(
"com.myapp", 0).versionName;
} catch (NameNotFoundException e) {
Log.e(TAG, e.getMessage());
}
return verName;
}
或者在AndroidManifest中將android:versionName="1.2.0"寫成android:versionName="@string/app_versionName",然後在values/strings.xml中添加對應字串,這樣實現之後,就可以使用如下代碼獲得版本名稱:
[html]
public static String getVerName(Context context) {
String verName = context.getResources()
.getText(R.string.app_versionName).toString();
return verName;
}
public static String getVerName(Context context) {
String verName = context.getResources()
.getText(R.string.app_versionName).toString();
return verName;
}
同理,apk的應用程式名稱可以這樣獲得:
[html]
public static String getAppName(Context context) {
String verName = context.getResources()
.getText(R.string.app_name).toString();
return verName;
}
public static String getAppName(Context context) {
String verName = context.getResources()
.getText(R.string.app_name).toString();
return verName;
}