微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法从通知启动的活动中删除其他内容

如何解决无法从通知启动的活动中删除其他内容

我有MainActivity,它是从通知中启动的,具有以下额外功能

 val intent = Intent(this,MainActivity::class.java)
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
    intent.putExtra(Constants.EXTRA_NEWS_ID,id.toInt())
    val options = Bundle()
    options.putInt(Constants.EXTRA_NEWS_ID,id.toInt())
    val pendingIntent = PendingIntent.getActivity(
        this,id.toInt(),intent,PendingIntent.FLAG_ONE_SHOT,options
    )

然后在MainActivity onCreate中检查附加功能,并尝试删除附加功能

if (intent.hasExtra(Constants.EXTRA_NEWS_ID)) {
        intentFromNotification = true
        Application.newsDetailId = intent.getIntExtra(Constants.EXTRA_NEWS_ID,0)
        Log.d("NOTIF","NewsId = ${NzmApplication.newsDetailId}")
        intent.removeExtra(Constants.EXTRA_NEWS_ID)
        intent.replaceExtras(Bundle())
        intent.action = ""
        intent.data = null
        intent.flags = 0
    }

稍后经过一些初始逻辑后,我打开了第二个ContentActivity,如下所示:

if (intentFromNotification) { // Activity called from notification = automaticly redirect to news detail
                        val intent = Intent(this,ContentActivity::class.java)
                        intent.putExtra(
                            Constants.EXTRA_FRAGMENT,Constants.FRAGMENT_NEWS_DETAIL
                        )
                        intentFromNotification = false
                        startActivity(intent)
                    }

ContentActivity可以正常工作,显示所需的内容,但是当我按ContentActivity时,应打开MainActivity并等待用户交互,但是它再次执行相同的代码块,如第一次打开并自动打开ContentActivity。仍然存在其他功能,因此应用程序基本上是循环的。

更奇怪的是,并非在所有设备上都会发生。 我有Sony Xperia XZ1 Compact(Android 9),但大约250位用户中没有其他人没有报告过此问题。

编辑: ContentActivity中的onBackPress

 override fun onBackpressed() {
    super.onBackpressed()
    if (supportFragmentManager.backStackEntryCount == 0) {
        this.finish()
    }
}

解决方法

问题出在开发人员设置中,“不保留活动” 经过一些特定的测试,我忘记禁用此设置 也许有人会觉得这很有帮助:)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。