您的位置:首页 > 移动开发 > Android开发

Android开发:教你如何获取软件自身版本号和Android系统版本号

2015-01-28 11:36 113 查看

前言

在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());
		}
	}


详细源码下载链接:http://download.csdn.net/detail/xiong_it/8403983

如若转载,还请注明出处和链接:/article/2590618.html谢谢!


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: