2010-09-14 30 views
11

này nên được đơn giản nhưng tôi không thể tìm thấy bất kỳ thông tin về vấn đề này ...Bắt chuỗi trọn gói từ thiết bị Android biểu hiện

tôi chỉ đơn giản muốn đọc giá trị gói trong manifest android ...

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="THIS" 

lý do rất đơn giản tôi phải gọi context.getResources(). GetIdentifier (...) và tôi cần gói.

vì mã này sẽ được sử dụng lại trong các ứng dụng khác mà tôi muốn làm bằng chứng ngu ngốc khi xuất và do đó không phải thay đổi giá trị mỗi lần.

ai biết cách thực hiện việc này?

Trả lời

17

Trong một hoạt động, bạn chỉ có thể gọi getPackageName(). Nếu quý vị nên xảy ra cần thêm dữ liệu từ tệp kê khai, bạn có thể sử dụng lớp PackageInfo: http://developer.android.com/reference/android/content/pm/PackageInfo.html

Ví dụ về cách thiết lập một TextView lên phiên bản ứng dụng của bạn:

try { 
     PackageManager pm = getPackageManager(); 
     PackageInfo packageInfo = pm.getPackageInfo(this.getPackageName(), 0); 
     TextView version = (TextView) findViewById(R.id.version); 
     version.setText(packageInfo.versionName); 
    } catch (NameNotFoundException e) {} 
+1

vỉa này không hoàn toàn chính xác, như packageInfo.versionName không trả về applicationId được định nghĩa trong tệp gradle và không phải thuộc tính gói i n tệp kê khai của bạn. Như trong hầu hết các trường hợp, điều này cũng giống như vậy, nó sẽ hoạt động tốt, nhưng khi bạn đang làm việc với buildFlavors thay đổi applicationId của bạn, điều này sẽ không còn hoạt động nữa. Tôi không tìm thấy bất kỳ giải pháp cho điều này, nhưng truy cập vào gói attribtue thông qua lớp 'R'. Cụ thể là thuộc tính package chỉ ảnh hưởng đến tên gói cho lớp 'R' và không phải là applicationId không phải là các gói lớp bình thường của bạn –

2

Từ "chính" Activity lớp học của bạn:

String package = this.getClass().getPackage().getName(); 
+6

của nó đáng chú ý rằng điều này sẽ chỉ làm việc nếu bạn hoạt động chính nằm trong gói có cùng tên với gói tệp kê khai (và không, ví dụ gói phụ) –

+0

gói của lớp phải không khớp với gói được xác định trong tệp kê khai, vì vậy điều này không đúng, mặc dù trong hầu hết các gói trường hợp này sẽ làm việc –

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