2011-02-10 31 views
68

Tôi muốn biết cách phân tích cú pháp tệp AndroidManifest.xml để nhận Số phiên bản ứng dụng thông qua mã. android: versionNameTải android: versionName phần tử tệp kê khai trong mã

+1

Bạn có thể lấy 'versionName' của ứng dụng bằng' BuildConfig.VERSION_NAME' nếu bạn đang sử dụng Gradle. Xem câu trả lời ở đây: http://stackoverflow.com/a/28352130/293280 –

Trả lời

144

Không cần phải phân tích cú pháp tệp AndroidManifest.xml cho việc này.

Bạn có thể có được điều này bằng cách sử dụng:

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

Sử dụng này bên trong phương pháp onCreate() của bạn.

+0

tôi cần so sánh ứng dụng của tôi android: versionName với ứng dụng trong phần tải xuống. ứng dụng của tôi không có trong thị trường Android .. tôi cần so sánh versionName trong điện thoại di động của tôi với phiên bản mới có sẵn để obatin phiên bản mới và hiển thị cảnh báo để cập nhật nó .. làm thế nào để có được số phiên bản mới của ứng dụng trong trang web – jennifer

+0

@jebbifer: Chỉ cần tạo yêu cầu 'Http Get' từ ứng dụng của bạn và gửi giá trị này trong các tham số của yêu cầu này. Và trên máy chủ của bạn, bạn cần phải xử lý yêu cầu đó và so sánh các giá trị phiên bản ứng dụng đó. Nếu lớn hơn ứng dụng khách, sau đó trả lời gửi cho anh ta/cô ấy một liên kết để tải xuống phiên bản mới của ứng dụng đó. –

+0

Rất niiiice ++ –

35

Trong trường hợp điều này hữu ích cho bất kỳ ai khác, bạn cũng có thể truy cập @string tài nguyên từ AndroidManifest.xml như bạn có thể từ các tệp xml khác.

Vì vậy, ví dụ, trong AndroidManifest.xml:

android:versionName="@string/app_versionName" 

và trong mã:

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

Bằng cách này bạn không cần (gây phiền nhiễu, IMO) try/lệnh catch. Tôi không chắc liệu đây có phải là cách được chấp thuận để làm mọi thứ không, nhưng nó có ý nghĩa với tôi.

+0

Giải pháp tốt đẹp :) – Janusz

+0

chúng ta có thể nhận được nội dung tệp kê khai hay không. –

+1

giải pháp tuyệt vời! Thay vì chỉnh sửa chuỗi trực tiếp từ tệp kê khai, hãy sử dụng giá trị chuỗi và chỉnh sửa nó, mã của bạn sẽ không thay đổi sau đó! tôi thích! +2: P –

2

Cho đến nay, tôi đã sử dụng đoạn mã dưới đây từ this bài viết và thành công có mã phiên bản phiên bản tên từ AndroidManifest.xml

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

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

Vui lòng mở rộng câu trả lời của bạn vì câu trả lời chỉ liên kết không được xem là tốt trên SO. –

8

Nếu bạn đang sử dụng Studio Android, tên phiên bản có sẵn trong lớp BuildConfig. Lớp học này được tạo tại thời điểm biên dịch:

String versionName = BuildConfig.VERSION_NAME; 

Đây là cách sạch nhất để truy xuất tên phiên bản.

+1

Phải là câu trả lời được chấp nhận! Cảm ơn nhiều – Phil

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