2011-02-10 4 views
68

코드를 통해 애플리케이션 버전 번호를 얻기 위해 AndroidManifest.xml 파일을 구문 분석하는 방법을 알고 싶습니다. 안드로이드 : versionName를코드에서 안드로이드 : versionName 매니페스트 요소 얻기

+1

Gradle을 사용하는 경우 애플리케이션의 'versionName'을 (를) BuildConfig.VERSION_NAME으로 가져올 수 있습니다. 여기에 대한 답변을 참조하십시오 : http://stackoverflow.com/a/28352130/293280 –

답변

144

필요가 이것에 대한 AndroidManifest.xml 파일을 구문 분석합니다.

당신은 사용하여이 작업을 얻을 수 있습니다 : 당신의 onCreate() 방법 내부

try 
{ 
    String app_ver = this.getPackageManager().getPackageInfo(this.getPackageName(), 0).versionName; 
} 
catch (NameNotFoundException e) 
{ 
    Log.e(tag, e.getMessage()); 
} 

사용이.

+0

나는 내 응용 프로그램 android : versionName을 다운로드 할 때 응용 프로그램과 비교해야합니다. 내 응용 프로그램은 안드로이드 마켓에 없습니다 .. 내 모바일에있는 versionName을 사이트에서 사용할 수있는 것과 비교하여 새 버전을 obatin하고이를 업데이트하라는 경보를 표시해야합니다 .. 어떻게 새 버전의 응용 프로그램을 가져올 수 있습니까? – jennifer

+0

@jebbifer : 애플리케이션에서 'Http Get'요청을 만들고이 요청의 매개 변수로이 값을 보내면됩니다. 그리고 서버에서 요청을 처리하고 해당 응용 프로그램 버전 값을 비교해야합니다. 클라이언트 응용 프로그램보다 크면 응답에서 해당 응용 프로그램의 새 버전을 다운로드하는 링크를 보냅니다. –

+0

Very niiiice ++ –

35

다른 사람에게 도움이 될 경우 다른 xml 파일에서와 같이 AndroidManifest.xml의 @string 리소스에 액세스 할 수도 있습니다. 그래서 예를 들어, AndroidManifest.xml을의

:

android:versionName="@string/app_versionName" 

및 코드 :

string versionName = getResources().getString(R.string.app_versionName); 

당신이 (성가신, IMO) 시도/catch 문이 필요하지 않습니다 이쪽으로. 이 일이 승인 된 방법인지 확실하지 않지만 나에게 의미가 있습니다.

+0

좋은 해결책 :) – Janusz

+0

우리는 목록 내용을 얻을 수 있습니까? –

+1

멋진 솔루션! 매니페스트에서 직접 문자열을 편집하는 대신 문자열 값을 사용하여 편집하면 코드가 변경되지 않습니다! 나는 좋아한다! +2 : P –

2

지금까지 내가 this 기사에서 아래의 코드를 사용하고 성공적으로 AndroidManifest.xml

/* Get android:versionName */ 
String versionName = getPackageManager().getPackageInfo(getPackageName(), 0).versionName; 

/* Get android:versionCode */ 
int versionCode = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode; 
+0

링크 전용 답변이 적합하지 않으므로 답변을 확장하십시오. –

8

당신은 안드로이드 Studio를 사용하는 경우, 버전 이름에서 버전 코드버전 이름있어 클래스 BuildConfig에서 사용할 수 있습니다. 이 클래스는 컴파일시 생성 :

String versionName = BuildConfig.VERSION_NAME; 

버전 이름을 검색하는 가장 깨끗한 방법입니다.

+1

허용되는 대답이어야합니다! 대단히 감사합니다. – Phil