Como faço paira acessair o android: label for a Activity

Dado

Android.xml:

<activity android:name='.IconListActivity' android:label='@string/icon_list_activity_name' /> 

Strings.xml:

 <string name='icon_list_activity_name>Icon List</string> 

Como faço paira acessair a string 'Ícone Lista' atribuída IconListActivity.class ?

5 Solutions collect form web for “Como faço paira acessair o android: label for a Activity”

PackageManager#getActivityInfo() retorna uma estrutura ActivityInfo , que possui um labelRes e um campo de name , um dos quais deve ter o que você precisa.

De qualquer atividade:

 String label = null; try { label = getResources().getString( getPackageManager().getActivityInfo(getComponentName(), 0).labelRes); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } Log.d(LOG_TAG, "Activity Label: " + label); } String label = null; try { label = getResources().getString( getPackageManager().getActivityInfo(getComponentName(), 0).labelRes); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } Log.d(LOG_TAG, "Activity Label: " + label); 

Se você tem o ComponentName , então você pode fazer o seguinte:

 PackageManager pm = getPackageManager(); ActivityInfo activityInfo = pm.getActivityInfo (componentName, 0); Log.d ("ActivityLabel", activityInfo.loadLabel (pm).toString ()); 

Estamos tentando obter o label, mas o label retorna 0 e o name é o nome da class simples da atividade.

A maneira como conseguimos obter o String do label (estamos segmentando API 23, btw) estava usando o campo nonLocalizedLabel :

 ComponentName cn = new ComponentName(this, MainActivity.class); ActivityInfo info = getPackageManager().getActivityInfo(cn, 0); Log.d(LOG_TAG, "label == " + info.nonLocalizedLabel); 

De acordo com a documentation do elemento de atividade , o atributo xml name é paira uma subclass de Activity , ou seja, não tem nada a view com o nome da atividade. labelRes é o campo desejado aqui (correspondente ao atributo XML do label ).

Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.