2010-04-09 33 views
14

Tôi đã gặp khó khăn khi lấy tên phiên bản cho một ứng dụng đang chạy từ loại đối tượng PackageInfo.Cố gắng lấy Gói Phiên bản Thông tin để hiển thị trong thông báo "Giới thiệu"

Tôi đã xây dựng Giao diện Parcelable với tất cả các trường được liên kết với loại đối tượng PackageInfo. Đầu vào chính cho phương thức giao diện đó là đối tượng Parcel.

Tôi dường như không thể tìm ra cách liên kết chính xác các đối tượng Parcelable, Parcel và PackageInfo này.

Có mã mẫu nào ở đó mà tôi có thể xem không? Có vẻ như nó không phải là khó khăn nhưng nó có vẻ là stumping tôi.

Cảm ơn Jazz

+0

Câu hỏi của bạn không thực sự hợp lý với tôi. Thông tin gói phải làm gì với bưu kiện? – synic

+0

PackageInfo (chỉ có nguồn thời gian chạy phiên bản xây dựng mà tôi có thể tìm thấy) thực hiện đối tượng Parcelable. Cách duy nhất mà tôi đã có thể tìm thấy để đối phó với một đối tượng Parcelable là xây dựng một giao diện yêu cầu đối tượng Parcel để chạy. Tôi sẽ bị đánh dấu màu hồng nếu tôi không cần phải giải quyết một bưu kiện. – user313135

Trả lời

3

PackageInfo 's versionName là thành viên dữ liệu công cộng. Bạn không cần phải làm bất cứ điều gì đặc biệt để có được "tên phiên bản cho một ứng dụng đang chạy từ loại đối tượng PackageInfo". Nếu bạn có đối tượng PackageInfo có tên info, bạn truy cập versionName qua info.versionName.

+1

Cảm ơn .... Có vẻ như đã đi làm. – user313135

34

Mẫu mã:

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

tôi sử dụng đoạn mã sau để có được phiên bản sử dụng trong biểu hiện. Tôi đã viết một chức năng nhỏ để đóng gói và giấu phần lớn này cần thiết để có được một 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; 
} 

Điều này sẽ trả về int được chọn để xác định phiên bản của bạn trên thị trường (VersionCode). Không phải là VersionName. Để xem cách thay đổi mã cho điều này, hãy xem mã từ Casebash.

-4

Cũng có một phím tắt:

String version = new PackageInfo().versionName;

+0

versionName của cái gì? – seb

6

cách hiện đại:

Nếu bạn xây dựng dự án Android của bạn bằng cách Gradle (với Android Studio), có một phím tắt tốt nhất để có được phiên bản :

com.yourproject.BuildConfig.VERSION_NAME 

Nó liên kết với versionName trongcủa bạntệp.

Thực tế, bạn có thể nhận ID ứng dụng và biết thêm thông tin từ tệp build.gradle theo cách này.

Các vấn đề liên quan