2010-04-09 3 views
14

PackageInfo 객체 유형에서 실행중인 응용 프로그램의 versionName을 가져 오는 데 어려움을 겪고 있습니다."About"메시지에 표시 할 패키지 버전 정보를 얻으려고 시도합니다.

필자는 PackageInfo Object 유형과 관련된 모든 필드가있는 Parcelable Interface를 구성했습니다. 해당 인터페이스 메소드의 기본 입력은 Parcel 객체입니다.

이러한 Parcelable, Parcel 및 PackageInfo 개체를 올바르게 연결하는 방법을 알아낼 수 없습니다.

내가 볼 수있는 샘플 코드가 있습니까? 그게 어려워 야하는 것처럼 보이지는 않지만 저에게 난처한 것처럼 보입니다.

감사 재즈

+0

귀하의 질문에 실제로 의미가 없습니다. 패키지 정보는 소포와 어떤 관련이 있습니까? – synic

+0

PackageInfo (찾을 수있는 빌드 버전의 런타임 소스 만)는 Parcelable 객체를 구현합니다. Parcelable 객체를 처리 할 수있는 유일한 방법은 Parcel 객체를 실행해야하는 인터페이스를 작성하는 것입니다. 소포를 다룰 필요가 없다면 나는 핑크색으로 간지럽 힙니다. – user313135

답변

3

PackageInfoversionName 공용 데이터 멤버입니다. "PackageInfo Object 유형에서 실행중인 응용 프로그램의 versionName"을 얻으려면 특별한 작업을 수행 할 필요가 없습니다. info이라는 PackageInfo 개체가있는 경우 info.versionName을 통해 versionName에 액세스합니다.

+1

감사합니다 .... 작동하는 것 같습니다. – user313135

34

샘플 코드 :

try { 
    PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0); 
    return packageInfo.versionName; 
} catch (NameNotFoundException e) { 
    //Handle exception 
} 
8

나는 매니페스트에 사용 된 버전을 얻으려면 다음 코드를 사용합니다. 나는 int를 얻기 위해 필요한 다소 큰 덩어리를 캡슐화하고 숨기위한 작은 함수를 작성했습니다.

private int getVersion() { 
    int version = -1; 
    try { 
     PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_META_DATA); 
     version = pInfo.versionCode; 
    } catch (NameNotFoundException e1) { 
     Log.e(this.getClass().getSimpleName(), "Name not found", e1); 
    } 
    return version; 
} 

이것은 시장에서 귀하의 버전 (VersionCode)을 식별하기 위해 선택한 int를 반환합니다. VersionName이 아닙니다. 이를 위해 코드로 변경하는 방법을 보려면 Casebash의 코드를 살펴보십시오.

-4

또한 바로 가기가 :

String version = new PackageInfo().versionName;

+0

버전 이름은 무엇입니까? – seb

6

현대 방법 : 당신이 (안드로이드 스튜디오와) Gradle을하여 안드로이드 프로젝트를 빌드하는 경우

버전을 얻을 수있는 최선의 바로 가기가 :

com.yourproject.BuildConfig.VERSION_NAME 

그것은 당신의에 versionName에 연결되어있어파일.

실제로이 방법으로 파일 build.gradle에서 응용 프로그램 ID 및 자세한 정보를 얻을 수 있습니다.

관련 문제