我可以在清单(对于 api < 27)和运行时(对于 API 27+)中注册自定义意图吗?
Posted
技术标签:
【中文标题】我可以在清单(对于 api < 27)和运行时(对于 API 27+)中注册自定义意图吗?【英文标题】:Can I register a custom intent both in manifest (for api < 27) and at runtime (for API 27+)? 【发布时间】:2020-02-25 19:36:14 【问题描述】:问题是,我可以同时注册清单和运行时自定义意图吗?还是被禁止或不赞成? 我的应用同时针对 API 21 和 API27+,如果可能的话,我不希望有 2 个清单(无论是否注册意图)。
【问题讨论】:
【参考方案1】:您可以在 Manifest 和运行时注册相同的 BroadcastReceiver
,但这可能没有意义。
为了使您的应用程序在 API 21 和最新的 android 版本上都能运行,我建议您删除 Manifest 声明的接收器并在运行时注册它,例如在前台服务或 Activity
中(实际上取决于你想要达到的目标)。这样,无论您的 Android 版本如何,您都会收到Intent
。
顺便说一句,如果您保留 Manifest 声明的接收器并在运行时注册BroadcastReceiver
,则在发送匹配的广播时接收器将被调用两次。
【讨论】:
你确定它会被调用两次吗?这不是我现在正在经历的行为。另外,如果我没有在 API21 的清单中注册它,我不会得到它。 我在 API 24 上对其进行了测试(在行为改变之前),如果我在 Manifest 和 Activity 中注册了一次相同的接收器,它将被触发两次(只要 Activity 是运行)。以上是关于我可以在清单(对于 api < 27)和运行时(对于 API 27+)中注册自定义意图吗?的主要内容,如果未能解决你的问题,请参考以下文章
我可以通过java代码添加facebook appId而不是添加清单(API 4)