如何获取特定活动的android:label?

时间:2016-11-30 16:42:05

标签: android

我的应用中有4种不同的活动。我们说它们是:MainMain2Main3Main4。每个人都有自己的特定android:label,例如:homepage1page2page3

我试图获取每项活动的所有标签。不知何故,下面的代码只显示第一个活动的标签。我该如何解决这个问题? 所以基本上,我可以为每个活动获得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;
}

2 个答案:

答案 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());
}