xamarin 启动活动在Android 13中不起作用

mrfwxfqh  于 2023-05-27  发布在  Android
关注(0)|答案(1)|浏览(175)

描述我正在使用Firebase消息服务处理推送通知在通知上点击Intent OnHandleIntent方法调用我尝试启动启动启动屏幕的活动它适用于Android 10但不适用于Android 13设备。
我确实在所有模式下都会收到通知,无论应用程序是在前台,后台还是已杀死模式。
但是当应用程序处于后台或杀死模式,我点击通知时,它没有做任何事情。我将其调试到后台模式,在Tapped通知上,它到达onHandleIntent方法,在该方法中,我创建了启动屏幕的新意图并启动Activity,但Activity没有运行应用程序,也没有进入前台或调用启动活动代码

复制步骤

1.创建通知意图
1.在通知时点击OnHandleIntent尝试启动任何Activity,无论是splash Activity还是Main Activity它未在Android 13设备上运行

基本信息

  • 安卓系统:
  • 受影响器械:Android 13设备

代码示例

通知活动

public class NotificationIntentService : IntentService
{
    public NotificationIntentService() : base("NotificationIntentService")
    {

    }

    protected override async void OnHandleIntent(Intent intent)
    {
        try
        {

            var notificationManager = (NotificationManager)GetSystemService(Context.NotificationService);
            notificationManager.Cancel(0);

            var action = intent.Extras.GetString("action"); 

            if (string.IsNullOrWhiteSpace(action))
            {
                action = "default";
            }

            var newIntent = new Intent(this, typeof(SplashActivity));

            if (intent?.Extras != null)
            {
                newIntent.PutExtras(intent.Extras);
            }

            newIntent.AddFlags(ActivityFlags.NewTask);
            StartActivity(newIntent);

        }
        catch (System.Exception ex)
        {
           
        }
    }

    
}

飞溅活动

[Activity(Theme = "@style/MyTheme.Splash", MainLauncher = true, NoHistory = true)]
public class SplashActivity : AppCompatActivity
{
    static readonly string TAG = "X:" + typeof(SplashActivity).Name;

    public override void OnCreate(Bundle savedInstanceState, PersistableBundle persistentState)
    {
        base.OnCreate(savedInstanceState, persistentState);
        
    }

    protected override void OnResume()
    {
        base.OnResume();
        var mainActivity = new Android.Content.Intent(Application.Context, typeof(MainActivity));
        if (Intent?.Extras != null)
        {
            mainActivity.PutExtras(Intent.Extras);
        }

        StartActivity(mainActivity);
    }

    public override void OnBackPressed() { }
}

预期行为

它应该运行splash活动,该活动将运行主活动,相同的代码在Android 10设备上工作正常,但在Android 13上则不行

实际行为

OnHandleIntent Start Activity未为Android 13设备运行任何Activity

代码示例

下面是重新创建问题的示例
https://github.com/aakashsolangi/SampleNotification

vmdwslir

vmdwslir1#

你有没有尝试过使用Android 13的新闪屏API?我认为这可能与您的问题有关,或者您需要在catch处理程序中捕获并记录错误,以查看失败的原因。
我已经得到了一个答案,展示了如何使用新的闪屏API here

相关问题