2016-11-30 3 views
1

У меня есть 4 различных мероприятия в моем приложении. Предположим, что они: Main, Main2, Main3 и Main4. Каждый из них имеет свой собственный конкретный android:label, такой как: home, , 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

Этикетка является то, что вы назначаете активность и статичны. Итак, почему вам нужно получить ярлык активности через код? – CopsOnRoad

+0

@Jack Я пытаюсь построить объект JSON с именем labelName и activityName. – 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(); 
    } 
Смежные вопросы