2010-04-09 11 views
14

Mam problem z uzyskaniem nazwy wersji dla działającej aplikacji z typu obiektu PackageInfo.Próba uzyskania informacji o wersji pakietu do wyświetlenia w komunikacie "Informacje"

Skonstruowałem interfejs działkowy ze wszystkimi polami powiązanymi z typem obiektu PackageInfo. Podstawowym wejściem dla tej metody interfejsu jest obiekt Parcel.

Nie mogę wydawać się dowiedzieć, jak poprawnie powiązać te obiekty działki, działki i informacje o pakiecie.

Czy jest tam przykładowy kod, na który mogę spojrzeć? Nie wydaje się, że powinno być to trudne, ale wydaje się, że mnie denerwuje.

Dzięki Jazz

+0

Twoje pytanie nie ma dla mnie większego sensu. Jakie informacje na temat pakietu mają do czynienia z paczkami? – synic

+0

PackageInfo (tylko źródło runtime wersji kompilacji, które mogłem znaleźć) implementuje obiekt Parcelable. Jedynym sposobem, jaki udało mi się znaleźć, aby poradzić sobie z obiektem Parcelable, jest zbudowanie interfejsu, który wymaga uruchomienia obiektu Parcel. Byłbym łaskotany na różowo, gdybym nie musiał zajmować się paczką. – user313135

Odpowiedz

3

PackageInfo „s versionName jest członkiem dane publiczne. Nie musisz robić nic specjalnego, aby uzyskać "versionName dla działającej aplikacji z typu PackageInfo Object". Jeśli masz obiekt o nazwie PackageInfo o nazwie info, uzyskujesz dostęp do versionName poprzez info.versionName.

+1

Dzięki .... Wydaje się pracować. – user313135

34

Przykładowy kod:

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

używam następujący kod, aby uzyskać wersji używanego w manifeście. Napisałem małą funkcję enkapsulacji i ukrywania tej dość dużej części potrzebnej do uzyskania 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; 
} 

Spowoduje to zwrócenie int wybranego do identyfikacji Twojej wersji na rynku (VersionCode). Nie nazwa_wersji. Aby zobaczyć, jak zmienić kod na ten kod, spójrz na kod z Casebash.

-4

Ponadto istnieje skrót:

String version = new PackageInfo().versionName;

+0

versionName czego? – seb

6

Nowoczesny sposób:

Jeśli budować Android projektu przez Gradle (z Android Studio), nie jest najlepszy skrót, aby uzyskać wersji :

com.yourproject.BuildConfig.VERSION_NAME 

Jest ona powiązana z versionName w swoim build.gradle plik.

W ten sposób można uzyskać identyfikator aplikacji i więcej informacji z pliku build.gradle.

Powiązane problemy