Android – понимание изменений в Android 14

Я новичок в разработке 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() в действие Б, если не хочу, чтобы оно появлялось снова, но я хотел бы понять, почему это работало раньше и почему не работает сейчас.

Вы хотите сказать, что он возвращается к экрану B после того, как достигает экрана A при использовании жеста/кнопки «Назад»?

Sujal Kumar 11.07.2024 08:25

Можете ли вы поделиться кодом, чтобы проиллюстрировать сценарий, о котором вы упоминаете?

Ricky Mo 11.07.2024 08:26

@SujalKumar, после завершения экрана C он возвращается к экрану B. Да, есть кнопка для сохранения полей и продолжения.

tiredqa_18 11.07.2024 08:30

@RickyMo, код довольно длинный, и я не уверен, какой частью поделиться, поскольку не знаю, что вызывает проблему. Если я смогу понять изменения в Android 14, которые могли вызвать это, я думаю, это можно сузить.

tiredqa_18 11.07.2024 08:31

@tiredqa_18 поделитесь кодом, в котором вы запускаете намерения.

Bob 11.07.2024 08:35

Ожидается, что при вызове Finish() в действии C он возвращается к действию B, если вы никогда не вызывали Finish() в действии B, независимо от того, до или после Android 14. Я не уверен, что является причиной вашего случая в Android 13. . Что делает ваша трансляция в задании C? Прислушиваетесь ли вы к этому конкретному намерению где-нибудь в своем приложении?

Ricky Mo 11.07.2024 09:57

@tiredqa_18 Ты уже это исправил?

Bob 26.07.2024 10:14

@ Боб, да. причиной этого было изменение намерения

tiredqa_18 29.07.2024 04:32
1
8
77
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Оказывается, причиной этого стало изменение намерения для 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.

Другие вопросы по теме