AndroidManifest 属性解析以及 代码动态获取属性值

AndroidManifest.xml文件部分属性配置解析,以及如何在代码中获取指定配置值。


<manifest
    package="com.jiese.test"
    android:versionCode="1"
    android:versionName="1.0" >

    <application
        android:debuggable="false" >
      </application>

</manifest>


1)manifest-->package
     应用的包名,每一个应用的唯一标识;每个应用都必须给定该值,系统通过该值来区别和查找不同的应用。
获取该属性的代码:

	/**
	 * 获取应用的包名 (apk的包名,不是类所在的报名)
	 * @param conext 程序中的Activity, Application的实例都可以
	 */
	public static String getAppPackageName(Context context){
		if(context != null){
			return context.getPackageName();
		}
		return "";
	}



2)manifest-->versionCode
     当前app的版本号,用于app的升级,versionCode小的apk可以升级为versionCode大的apk,但是versionCode小的apk无法覆盖versionCode大的安装,必须先卸载。

获取该属性的代码:

	/**
	 * 获取程序版本号
	 * @param conext 程序中的Activity, Application的实例都可以
	 * @return -1获取失败
	 */
	public static int getAppVersionCode(Context context) {  
	    try{  
	        PackageManager pm = context.getPackageManager();  
	        PackageInfo pi = pm.getPackageInfo(context.getPackageName(), 0);  
	        return pi.versionCode;
	    } catch (Exception e) {
	    	e.printStackTrace();
	    	GoogleAnalyticsTool.getInstance().sendException(1, e);
	    }  
	    return -1;  
	}



3)manifest-->versionName
     当前app的版本名
获取该属性的代码:

	/**
	 * 获取程序版本名称
	 * @param conext 程序中的Activity, Application的实例都可以
	 */
	public static String getAppVersionName(Context context){  
	    String versionName = "";  
	    try{  
	        PackageManager pm = context.getPackageManager();  
	        PackageInfo pi = pm.getPackageInfo(context.getPackageName(), 0);  
	        versionName = pi.versionName;  
	    } catch (Exception e) {
	    	e.printStackTrace();
	    	GoogleAnalyticsTool.getInstance().sendException(1, e);
	    }  
	    return versionName;  
	}




4)manifest-->application-->debuggable
     是否开启debug模式;该属性可以不设置。
     true:为debug 模式,可以通过工具调试该应用,可以打断点。

     false:为非debug模式,不可以通过调试工具调试应用,打的断点无效。

获取该属性的代码:

	/**
	 * 获取是否为debug mode
	 * @param conext 程序中的Activity, Application的实例都可以
	 */
	public static boolean isDebugMode(Context context){
		if(context == null){
			Log.e("Utils::isDebugMode", "context is null");
			return false;
		}
		ApplicationInfo info = context.getApplicationInfo();
		return (0!=((info.flags) & ApplicationInfo.FLAG_DEBUGGABLE));
	}


转载请注明出处,jiese1990。

AndroidManifest 属性解析以及 代码动态获取属性值,布布扣,bubuko.com

AndroidManifest 属性解析以及 代码动态获取属性值

上一篇:iOS6.0下奇怪的_UIRecordArgumentOfInvocationAtIndex异常


下一篇:Android自学笔记-12-ContentProvider简单例子