Theo như tôi hiểu từ AOSP thực sự bạn có thể sử dụng nhãn này chỉ để hiển thị một tên khá cho một người dùng (nếu bạn có nhiều quá trình trong cùng một uid). Ví dụ: đây là một phần của mã trong tệp RunningState.java:
// If we couldn't get information about the overall
// process, try to find something about the uid.
String[] pkgs = pm.getPackagesForUid(mUid);
// If there is one package with this uid, that is what we want.
if (pkgs.length == 1) {
try {
ApplicationInfo ai = pm.getApplicationInfo(pkgs[0], 0);
mDisplayLabel = ai.loadLabel(pm);
mLabel = mDisplayLabel.toString();
mPackageInfo = ai;
return;
} catch (PackageManager.NameNotFoundException e) {
}
}
// If there are multiple, see if one gives us the official name
// for this uid.
for (String name : pkgs) {
try {
PackageInfo pi = pm.getPackageInfo(name, 0);
if (pi.sharedUserLabel != 0) {
CharSequence nm = pm.getText(name,
pi.sharedUserLabel, pi.applicationInfo);
if (nm != null) {
mDisplayLabel = nm;
mLabel = nm.toString();
mPackageInfo = pi.applicationInfo;
return;
}
}
} catch (PackageManager.NameNotFoundException e) {
}
}
Về cơ bản, những điều sau đây. Lúc đầu, nó cố gắng để có được thông tin về quá trình tổng thể. Nếu nó không tìm thấy, nó sẽ cố gắng để có được thông tin bằng cách sử dụng UID của ứng dụng như một tham số (đây là một phần của mã mà tôi đã đưa ra ở đây). Nếu chỉ có một gói với UID này thì thông tin về quá trình này được lấy từ gói này. Nhưng nếu có một số gói (sử dụng shareUserId) thì nó lặp lại và cố gắng tìm tên chính thức (khá).
Là một xác nhận lời nói của tôi Tôi tìm thấy chuỗi sau đây trong MediaProvider:
<!-- Label to show to user for all apps using this UID. -->
<string name="uid_label">Media</string>
Như vậy, tất cả các quá trình sử dụng android:sharedUserId="android.media"
sẽ có tên Media
.
Tôi không nghĩ rằng tính năng này sẽ được các nhà phát triển thông thường sử dụng rất nhiều và hữu ích cho họ.