Android基礎:教你如何獲取軟體自身版本號和Android系統版本號
阿新 • • 發佈:2019-02-13
前言
在Android軟體開發過程中,版本升級常常需要得到軟體版本,與伺服器作對比後決定是否升級,那麼如何獲取軟體版本呢?有時我們需要獲取系統版本已決定載入合適的資原始檔,系統版本又如何得到呢?假如我們不想要在系統指定的位置填寫版本號,我們可以如何定義軟體版本呢?又該如何獲取呢?本文將一一告訴你。
正文
1、佈局是這樣的:
有兩個按鈕,一個按鈕獲取軟體版本,一個按鈕獲取系統版本;一個TextView顯示獲取到的版本號:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.getversion.MainActivity" > <TextView android:id="@+id/version" android:layout_width="fill_parent" android:layout_height="wrap_content" android:ellipsize="marquee" android:hint="@string/please_choose" android:marqueeRepeatLimit="marquee_forever" android:singleLine="true" /> <Button android:id="@+id/get_system" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/get_app" android:layout_alignBottom="@+id/get_app" android:layout_alignParentRight="true" android:text="@string/sys_version" /> <TextView android:id="@+id/get" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/get_app" android:layout_alignBottom="@+id/get_app" android:layout_alignLeft="@+id/version" android:text="@string/get" android:textSize="20sp" /> <Button android:id="@+id/get_app" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/version" android:layout_marginLeft="15dp" android:layout_marginTop="41dp" android:layout_toRightOf="@+id/get" android:text="@string/app_version" /> </RelativeLayout>
2、程式碼是這樣滴:
/** * 獲取系統版本號 */ private void getSystemVersion() { //int sysVersion = android.os.Build.VERSION.SDK_INT;//獲取sdk平臺值,如19 String sysVersion = android.os.Build.VERSION.RELEASE;//獲取系統版本,如4.0.2 Log.d(TAG, "sysVersion="+sysVersion); setVersion(getString(R.string.sys_version)+":"+String.valueOf(sysVersion)); } /** * 獲取軟體版本號 */ private void getAPPVersion() { PackageManager pm = this.getPackageManager();//得到PackageManager物件 try { PackageInfo pi = pm.getPackageInfo(this.getPackageName(), 0);//得到PackageInfo物件,封裝了一些軟體包的資訊在裡面 int appVersion = pi.versionCode;//獲取清單檔案中versionCode節點的值 Log.d(TAG, "appVersion="+appVersion); setVersion(getString(R.string.app_version)+":"+String.valueOf(appVersion)); } catch (NameNotFoundException e) { e.printStackTrace(); Log.e(TAG, "getAppVersion:"+e.getCause()); } } /** * 設定版本號 * @param ver 版本號 */ private void setVersion(String ver){ if (ver !=null && (!"".equals(ver))) { version.setText(ver); }else { version.setText(getString(R.string.error)); } } }
現在大家該知道如何獲取軟體版本和系統版本了吧?那麼還剩下一個問題:我們如何自定義版本號呢?
利用meta-data節點自定義版本號以及獲取方法
首先在清單檔案Mainfest中的Application節點下新增一個節點<meta-data>,指定android:name,android:value值即可:<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <meta-data android:name="SYSTEM_VERSION" android:value="1.0 from meta-data" /> </application>
程式碼中稍作修改,定義一個全域性變量表示點選左邊按鈕的次數,基數次時顯示軟體標準的版本號,偶數次時,顯示自定義版本號。
獲取自定義版本號程式碼如下:
/**
* 獲取自定義在meta-data節點下的版本號
*/
private void getCustomVersion(){
PackageManager pm = this.getPackageManager();
try {
ApplicationInfo ai = pm.getApplicationInfo(this.getPackageName(), PackageManager.GET_META_DATA);//第二個引數必須是這個,否則下面報錯
String customVersion = ai.metaData.getString("SYSTEM_VERSION");//獲取meta-data節點下的value值
setVersion(getString(R.string.app_version)+":"+customVersion);
} catch (NameNotFoundException e) {
e.printStackTrace();
Log.e(TAG, "getCustomVersion:"+e.getCause());
}
}