У меня есть действие, называемое A. Я хочу добавить два псевдонима активности B и C. Можно ли узнать, называется ли A кодом B или C в коде? Я хочу, чтобы применить другое поведение, когда она называется, как B или C.Проверить псевдоним активности на целевую активность
ответ
Вы можете предоставить дополнительную информацию для каждого <actvity-alias>
в Manifest
и оценить ActivityInfo
с помощью PackageManager
:
Чтобы проиллюстрировать это, давайте предположим, что вы хотите отобразить два TextView
s в своей целевой Activity
и установить контент в зависимости от того, какой псевдоним используется.
В Manifest
, вы поставите следующие элементы:
<activity
android:name=".HalloActivity"
android:label="@string/HalloDefault" >
</activity>
<activity-alias
android:name=".SalutActivity"
android:targetActivity=".HalloActivity"
android:label="@string/SalutAlias">
<meta-data android:name="LOCALE" android:value="fr" />
</activity-alias>
<activity-alias
android:name=".HelloActivity"
android:targetActivity=".HalloActivity"
android:label="@string/HelloAlias">
<meta-data android:name="LOCALE" android:value="en" />
</activity-alias>
Чтобы использовать псевдоним, запустите Activity
так:
Intent intent = new Intent();
String pName = getPackageName();
ComponentName componentName = new ComponentName(pName, pName + ".HelloActivity");
intent.setComponent(componentName);
startActivity(intent);
Тогда в то onCreate()
метод HalloActivity, получить android:label
и <meta-data>
примерно:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hallo);
String text;
String label = "?";
String locale = "de";
int color;
Intent intent = getIntent();
PackageManager pm = getPackageManager();
try
{
ActivityInfo ai = pm.getActivityInfo(intent.getComponent(), PackageManager.GET_META_DATA);
label = getString(ai.labelRes);
Bundle b = ai.metaData;
if (b != null)
{
locale = b.getString("LOCALE");
if (locale == null)
{
locale = "en";
}
}
}
catch (Exception ex)
{
Log.e(TAG, ex.getMessage());
}
switch(locale)
{
case "en":
text = "hello world :)";
color = Color.BLUE;
break;
case "fr":
text = "salut tout le monde :D";
color = Color.RED;
break;
default:
text = "hallo zusammen ;)";
color = Color.GREEN;
}
TextView tvHello = (TextView) findViewById(R.id.tvHello);
tvHello.setText(text);
tvHello.setTextColor(color);
TextView tvLabel = (TextView) findViewById(R.id.tvLabel);
tvLabel.setText(label);
}
Важно при работе с <activity-alias>
(цитата из documentation):
За исключением targetActivity, атрибуты являются подмножеством деятельности атрибутов. Для атрибутов в подмножестве ни одно из значений, заданных для цели, не переносится на псевдоним. Однако для атрибутов, не входящих в подмножество, значения, установленные для целевой активности, также относятся к псевдониму.
<meta-data>
в documentation.
- 1. Как проверить активность активности?
- 2. Начальная активность Android не вызывает целевую активность
- 3. Активность активности в Android активности предыдущей активности
- 4. Переключение активности активности на случайную активность
- 5. Активность активности Android Studio
- 6. Активность динамической активности Android
- 7. Пользовательского переход активности-активность
- 8. Активность активности FLAG_ACTIVITY_CLEAR_TOP
- 9. Активность в текущей активности
- 10. Напишите псевдоним активности в xamarin
- 11. Как установить целевую активность с переменной
- 12. Необходимо проверить, активна ли активность активности родителя или нет.
- 13. Активность/Фрагмент активности/Фрагмент активности/Фрагмент
- 14. Передача указателя активности на следующую активность
- 15. Как показать наложение активности на другую активность?
- 16. Android-уведомление нажимает на активность активности
- 17. Активность InvokeWorkflow внутри активности репликатора
- 18. Android получает вторую активность из стека активности
- 19. Запустить приложение, используя dailpad и псевдоним активности
- 20. не является подкласс активности или псевдоним
- 21. Сбой при открытии активности через псевдоним на манифесте
- 22. Как создать целевую активность с помощью диалогового окна выбора файла?
- 23. Активность активности Android + Анимация, чтобы показать загруженную активность
- 24. Как проверить, какая активность отображается на экране
- 25. Сохранение активности и активности, когда активность убита ОС
- 26. Очистить активность Android-активности и начать работу
- 27. Android Основная активность в отношении активности браузера
- 28. Маршрутизация на целевую страницу
- 29. Получить текущую активность в целях базовой активности
- 30. Обновление активности, активность начинается с фрагмента
Вы имеете в виду, когда вы начинаете деятельность, вы хотите знать, что она называется? – Shahzeb
Да, я хотел бы знать, называется ли A «от» B или C – greywolf82