Я новичок в разработке Android и хочу понять изменения, внесенные в Android 14 (уровень API 34).
Произошло следующее: обычный поток действий (из Android 13), который у нас есть (A -> B -> C), больше не завершается и не возвращается к A, а вместо этого возвращается к B. Какое изменение по сравнению с Android 14 вызывает это?
Как я понял из документации , неявные и ожидающие намерения претерпели некоторые изменения, но я не думаю, что это причина, поскольку оно все равно открывает действие, но, возможно, я ошибаюсь. Единственное изменение, которое я сделал для целевого приращения Android 14, — это указать поведение экспорта для приемников вещания.
Любой вклад приветствуется. Большое спасибо.
Код намерения для действия Б
startActivity(new Intent(EnterNameActivity.this, EnterMobileActivity.class));
AnimationsHandler.INSTANCE.playActivityAnimation(EnterNameActivity.this, AnimationsHandler.Animations.RightToLeft);
Код намерения для действия C
Intent intent = new Intent();
intent.setAction("FINISH");
sendBroadcast(intent)
finish();
Обратите внимание: я понимаю, что могу просто добавить finish() в действие Б, если не хочу, чтобы оно появлялось снова, но я хотел бы понять, почему это работало раньше и почему не работает сейчас.
Можете ли вы поделиться кодом, чтобы проиллюстрировать сценарий, о котором вы упоминаете?
@SujalKumar, после завершения экрана C он возвращается к экрану B. Да, есть кнопка для сохранения полей и продолжения.
@RickyMo, код довольно длинный, и я не уверен, какой частью поделиться, поскольку не знаю, что вызывает проблему. Если я смогу понять изменения в Android 14, которые могли вызвать это, я думаю, это можно сузить.
@tiredqa_18 поделитесь кодом, в котором вы запускаете намерения.
Ожидается, что при вызове Finish() в действии C он возвращается к действию B, если вы никогда не вызывали Finish() в действии B, независимо от того, до или после Android 14. Я не уверен, что является причиной вашего случая в Android 13. . Что делает ваша трансляция в задании C? Прислушиваетесь ли вы к этому конкретному намерению где-нибудь в своем приложении?
@tiredqa_18 Ты уже это исправил?
@ Боб, да. причиной этого было изменение намерения
Оказывается, причиной этого стало изменение намерения для Android 14. Необходимо установить имя пакета, чтобы оно правильно отображалось на экране.
// This makes the intent explicit.
Intent explicitIntent =
new Intent("com.example.action.APP_ACTION")
explicitIntent.setPackage(context.getPackageName());
context.startActivity(explicitIntent);
В этом ответе есть подробности https://stackoverflow.com/a/77371953/14787959.
Вы хотите сказать, что он возвращается к экрану B после того, как достигает экрана A при использовании жеста/кнопки «Назад»?