开发者社区 问答 正文

应用研发平台EMAS中移动push继承了AndroidPopupActivity,这是什么问题呢?

应用研发平台EMAS中请问移动push我继承了AndroidPopupActivity,app被杀死了也收到了通知,点击通知也唤起了这个Activity,但是没有走onSysNoticeOpened
方法,这是什么问题呢?

展开
收起
小小鹿鹿鹿 2023-11-20 22:22:40 78 分享 版权
2 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    这个问题可能是由多种原因引起的。首先,onSysNoticeOpened 方法是在 AndroidPopupActivity 中定义的一个回调方法,当用户点击系统通知时会被调用。如果你在子类中覆盖了这个方法并且没有显式调用 super.onSysNoticeOpened(),那么父类中的实现将不会被执行。

    另一个可能的原因是系统通知可能存在多个频道,你的应用可能会接收到不同频道的通知,而在 AndroidPopupActivity 中你可能只为某个特定频道注册了 onSysNoticeOpened 回调。

    除此之外,如果 AndroidPopupActivity 或其子类没有正确地注册为系统的默认活动(即在 AndroidManifest.xml 文件中有正确的声明),那么即使用户点击了通知也无法激活对应的 Activity 并调用相应的回调方法。

    为了更好地理解问题发生的具体情况,建议你检查以下几个方面:

    1. 确保 AndroidPopupActivity 的 onSysNoticeOpened 方法被正确地调用;
    2. 检查 AndroidPopupActivity 是否为系统的默认活动,并且是否已经正确地在 AndroidManifest.xml 文件中声明;
    3. 确认你的应用是否正确地为各个频道通知注册了 onSysNoticeOpened 回调;
    4. 查看应用的日志文件以获取更多详细的信息。
    2023-11-22 15:24:45
    赞同 展开评论
  • 这个问题可能是由于你的Activity没有正确地处理系统通知(System Notice)导致的。在Android中,当应用被杀死后,系统通知会保存在系统的通知栏中,当用户点击通知时,系统会尝试重新启动应用并调用相应的Activity。

    在这种情况下,你可能需要在你的Activity中重写onSysNoticeOpened方法,以便在处理系统通知时被调用。以下是一个简单的示例:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // ...
    }
    
    @Override
    protected void onNewIntent(Intent intent) {
        if (intent.getAction() == Intent.ACTION_VIEW) {
            // 处理系统通知的点击事件
            handleSystemNoticeClick(intent);
        } else {
            super.onNewIntent(intent);
        }
    }
    
    private void handleSystemNoticeClick(Intent intent) {
        // 在这里处理系统通知的点击事件
        // ...
    }
    

    在这个示例中,onNewIntent方法会在收到新的意图时被调用。你可以在这个方法中检查意图的ACTION属性,如果它是Intent.ACTION_VIEW,那么就表示这是一个系统通知的点击事件,你可以在这里处理它。

    2023-11-21 16:31:49
    赞同 展开评论
收录在圈子:
基于阿里巴巴以及合作伙伴的最佳实践,围绕大前端、云原生领域的相关技术热点(小程序、Serverless、应用中间件、低代码、DevOps)展开行业探讨,与开发者一起探寻云原生时代应用研发的新范式。
还有其他疑问?
咨询AI助理