2016-11-30 132 views
1

我在我的應用程序中有4個不同的活動。假設他們是:Main,Main2,Main3Main4。每一個都有自己特定的android:label,如:home,page1,page2page3如何獲取特定活動的android:label?

我試圖獲得每個活動的所有標籤。不知何故,下面的代碼只顯示第一個活動的標籤。我該如何解決這個問題?所以基本上,我可以得到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

你標籤的東西,您分配給該活動並且它是靜態的。那麼爲什麼你需要通過代碼獲得活動標籤? – CopsOnRoad

+0

@Jack我想用labelName和activityName構造JSON對象。 – Bun

+0

「如何根據每個活動的labelRes訪問標籤名稱?」 - 你的'getString()'調用形式,你似乎已經有了代碼。 – CommonsWare

回答

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