gpt4 book ai didi

android - 如何以编程方式从通知中恢复 Activity ?

转载 作者:行者123 更新时间:2023-11-29 02:27:57 25 4
gpt4 key购买 nike

我已经阅读了很多关于该主题的答案,但没有一个能解决这个问题。

该应用程序正在运行“前台服务”,因此需要通知。

这就是 Intent 的创建方式。

Intent intent = new Intent(context, notificationClass);
return PendingIntent.getActivity(context, 0, intent, 0);

请注意,从通知中启动的 Activity 类在运行时是已知的 (notificationClass)。对于额外的上下文,有一个库公开了一个 View,它在膨胀时创建了 Service,它创建了 Notification,因为任何 Activity 可以包含 View,请求 Class,以便在用户单击通知时恢复正确的 Activity

然后,intent 被添加到 notificationBuilder (NotificationCompat.Builder)。

notificationBuilder.setContentIntent(intent);

当应用进入后台然后点击通知时执行此操作,它会创建 Activity 的新副本而不是恢复它。

出于测试目的,我通过添加 ActivitylaunchMode 获得了预期的行为(Activity 在单击通知后恢复) (事先知道)到 AndroidManifest.xml 文件中的 singleTop。但我无法以任何其他方式让它工作。

有了这些约束,我想知道是否有可能在创建 Notification 时以编程方式获得相同的行为。我已经尝试了一堆 Intent 标志组合(还有 addFlagssetFlags),但没有成功。

是否有可能创建一个 Intent 以按照解释的方式行事?

非常感谢!

抄送 https://stackoverflow.com/users/769265/david-wasser已经回答了很多类似的 Intent 相关问题

最佳答案

不确定我是否完全理解,但如果你只是想将现有任务带到前台(这与从最近任务列表中选择任务相同),那么试试这个:

PackageManager pm = getPackageManager();
Intent intent = pm.getLaunchIntentForPackage(packageName);
return PendingIntent.getActivity(context, 0, intent, 0);

packageNameAndroidManifest.xml 中包的名称。

这会“启动”任务的根 Activity,它实际上不会启动任何东西,只是将现有任务带到前台。

关于android - 如何以编程方式从通知中恢复 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51176692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com