我的应用中有4种不同的活动。我们说它们是:Main
,Main2
,Main3
和Main4
。每个人都有自己的特定android:label
,例如:home
,page1
,page2
和page3
。
我试图获取每项活动的所有标签。不知何故,下面的代码只显示第一个活动的标签。我该如何解决这个问题?
所以基本上,我可以为每个活动获得labelRes
。如何根据每项活动的labelRes
访问标签名称?
ActivityInfo[] activityInfo = getActivityList(getApplicationContext());
for(int i = 0; i < activityInfo.length; i++) {
Log.i("class name: ", activityInfo[i].name);
Log.i("label: ", getLabelName(activityInfo[i].labelRes));
}
public String getLabelName(int i) {
String label = null;
try {
label = getResources().getString(
getPackageManager().getActivityInfo(getComponentName(), i).labelRes);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return label;
}
答案 0 :(得分:1)
以下代码为您提供每项活动的标签..它绝对有助于您
try {
ActivityInfo[] list = getPackageManager().getPackageInfo(getPackageName(),PackageManager.GET_ACTIVITIES).activities;
for(int i = 0;i< list.length;i++)
{
Log.i("log_activity: ", list[i].name);
Log.i("log_label: ",list[i].loadLabel(getPackageManager()).toString());
}
}
catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
答案 1 :(得分:0)
以下代码完全符合我的要求:
ActivityInfo[] activityInfo = getActivityList(getApplicationContext());
for(int i = 0; i < activityInfo.length; i++) {
Log.i("package name: ", activityInfo[i].packageName);
Log.i("class name: ", activityInfo[i].name);
Log.i("label name: ", activityInfo[i].loadLabel(getPackageManager()).toString());
}