Я пытаюсь запустить свое приложение на устройстве Android 14, где я отправляю широковещательное сообщение из моего основного приложения (1-е приложение), и на него подписывается одно из других моих приложений, например второе приложение (установленное на том же устройстве). При первой установке оба моих приложения без каких-либо проблем отправляют широковещательное сообщение. Однако, если я принудительно закрою свое первое приложение, а затем перезапущу его, широковещательные сообщения, отправленные моим первым приложением, больше не будут поступать в мое фоновое приложение (мое второе приложение).
Целевая версия платформы и целевой уровень API — Android 13 для обоих приложений, они разработаны в Xamarin.Forms.
Ниже приведен код, который я использую:
//MainActivity of 2nd app :
protected override async void OnCreate(Bundle savedInstanceState)
{
IntentFilter intentFilter = new IntentFilter(com.abc.xyz);
RegisterReceiver(_recieverClass, intentFilter);
}
protected override void OnDestroy()
{
UnRegisterReceiver(_recieverClass)
}
//ReceiverClass of 2nd app
[BroadcastReceiver(Enabled = true, Exported = true)]
[IntentFilter(new[] { com.abc.xyz })]
public class ReceiverClass : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
//Business logic
}
}
//Sending broadcast message in 1st app :
Intent intent = new Intent();
intent.SetAction(com.abc.xyz);
intent.SetFlags(ActivityFlags.FromBackground);
SendBroadcast(intent);
Я уже пытался явно объявить широковещательные сообщения в Android-манифесте моего второго приложения, но это не сработало.
<application android:label = "@string/app_name" android:allowBackup = "false" android:usesCleartextTraffic = "false">
<receiver android:name = ".ReceiverClass" android:enabled = "true" android:exported = "true">
<intent-filter>
<action android:name = "com.abc.xyz" />
</intent-filter>
</receiver>
</application>
Просмотрел Android 14 и документы Google и не нашел решения. Я что-то упускаю?
@JessieZhang-MSFT У меня есть журналы приложений, но нет журнала ошибок или чего-то подобного.
Не могли бы вы поделиться полными журналами этой проблемы, чтобы мы могли попытаться найти в ней некоторые подсказки?
Наконец-то я получил решение этой проблемы. По сути, моя трансляция для фонового приложения кэшировалась и уничтожалась на Android 14. Чтобы справиться с этим, я добавил Priority = int.MaxValue
в определение широковещательного IntentFilter, что устранило проблему.
Есть ли какой-нибудь журнал об этой проблеме?