我正在尝试在 Android 14 设备上运行我的应用程序,我正在从我的主应用程序(第一个应用程序)发送广播消息,并且它被我的其他应用程序之一订阅,例如第二个应用程序(安装在同一设备上)第一次安装时,我的两个应用程序都可以毫无问题地发送和接收广播消息。但是,如果我强制关闭我的第一个应用程序,然后重新启动它,我的第一个应用程序发送的广播消息将不再进入我的后台应用程序(我的第二个应用程序)。
这两个应用程序的目标框架版本和目标 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 Manifest 中明确声明我的第二个应用程序的广播消息,但这不起作用。
<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 docs,并没有找到任何解决方案。我在这里错过了什么吗?
终于,我找到了这个问题的解决方案。基本上,我的后台应用程序广播在 Android 14 上被缓存并终止。为了处理这个问题,在广播 IntentFilter 定义中添加了 Priority = int.MaxValue 并解决了问题。