两个类ResolveInfo
和ApplicationInfo
(扩展PackageItemInfo
)都有一个loadLabel
方法来“与这个项目关联的当前文本标签”。我尝试运行以下代码,第一个块打印出通过意图查询获得的与 Play Music 应用关联的标签,第二个块打印出通过使用包名称查询获得的与应用关联的标签。第一个打印“播放音乐”,但第二个打印出“Google Play 音乐”。这里发生了什么?
PackageManager pm = getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> activities = pm.queryIntentActivities(intent,
PackageManager.GET_META_DATA);
for (ResolveInfo activity : activities) {
// prints out "Play Music"
Log.d("butt", "" + activity.loadLabel(pm));
}
ApplicationInfo appInfo = null;
try {
appInfo = pm.getApplicationInfo("com.google.android.music", 0);
} catch (NameNotFoundException e) { }
if (appInfo != null) {
// prints out "Google Play Music"
Log.d("butt", "" + appInfo.loadLabel(pm));
}