广播接收器在 Android 14 中无法工作

问题描述 投票:0回答:1

我正在尝试在 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,并没有找到任何解决方案。我在这里错过了什么吗?

xamarin.forms android-14
1个回答
0
投票

终于,我找到了这个问题的解决方案。基本上,我的后台应用程序广播在 Android 14 上被缓存并终止。为了处理这个问题,在广播 IntentFilter 定义中添加了 Priority = int.MaxValue 并解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.