Как получить доступ к Android: ярлык для деятельности - PullRequest
20 голосов
/ 22 сентября 2009

С учетом

Android.xml:

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

strings.xml:

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

Как мне получить доступ к строке 'Список значков' предоставлено IconListActivity.class ?

Ответы [ 5 ]

30 голосов
/ 22 сентября 2009

PackageManager#getActivityInfo() возвращает структуру ActivityInfo, которая имеет поля labelRes и name, одно из которых должно иметь то, что вам нужно.

10 голосов
/ 06 ноября 2014

Из любой деятельности:

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);
7 голосов
/ 08 марта 2013

Если у вас есть ComponentName , то вы можете сделать следующее:

PackageManager pm = getPackageManager();
ActivityInfo activityInfo = pm.getActivityInfo (componentName, 0);
Log.d ("ActivityLabel", activityInfo.loadLabel (pm).toString ());
2 голосов
/ 14 октября 2015

Мы пытаемся получить метку, но labelRes return 0 и name - это простое имя класса Activity.

То, как нам удалось получить строку из метки (мы нацелены на API 23, кстати), использовало поле nonLocalizedLabel :

ComponentName cn = new ComponentName(this, MainActivity.class);
ActivityInfo info = getPackageManager().getActivityInfo(cn, 0);
Log.d(LOG_TAG, "label == " + info.nonLocalizedLabel);
0 голосов
/ 27 февраля 2013

Согласно документации для элемента действия , атрибут name xml предназначен для подкласса Activity, то есть это , а не , что-либо связанное с именем деятельность. labelRes - это требуемое поле (соответствует атрибуту label XML).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...