描述我正在使用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
1条答案
按热度按时间vmdwslir1#
你有没有尝试过使用Android 13的新闪屏API?我认为这可能与您的问题有关,或者您需要在catch处理程序中捕获并记录错误,以查看失败的原因。
我已经得到了一个答案,展示了如何使用新的闪屏API here。