gpt4 book ai didi

android - onResume() 中的 getIntent() 始终返回相同的操作,如何使用它?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:55:14 27 4
gpt4 key购买 nike

我正在显示一个通知,其 Intent 如下:

Intent intentOpen = new Intent(this, MainActivity.class);
intentOpen.setAction("ACTION_SHOW_BACKUP_FRAGMENT");
intentOpen.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendingIntentOpen = PendingIntent.getActivity(this, 0, intentOpen, PendingIntent.FLAG_UPDATE_CURRENT);
notificationBuilder.setContentIntent(pendingIntentOpen);

如您所见,action 设置为 "ACTION_SHOW_BACKUP_FRAGMENT",这样当用户点击通知时,我的 singleTop MainActivity 可以获取onResume() 方法与 getIntent().getAction()

为了让它工作,我必须像这样实现 onNewIntent():

protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}

到目前为止一切顺利,收到了操作,我可以显示备份 View 。但是,如果我按下主页按钮,使应用程序进入后台,然后通过最近的应用程序菜单再次进入它,将再次调用 onResume() 方法,但 “ACTION_SHOW_BACKUP_FRAGMENT” 操作仍然存在! 所以我无法区分用户是真的点击了通知还是只是恢复了应用

我曾尝试使用 Intent 和 PendingIntent 标志组合的日志来解决这个问题,但没有任何效果。我还尝试调用 setIntent(new Intent());onResume() 中使用操作后,但 onNewIntent() 仍然得到 “ACTION_SHOW_BACKUP_FRAGMENT” 下次我恢复应用程序时的操作。

我该如何解决这个问题?

最佳答案

最后我找到了 Intent 和 PendingIntent 标志的正确组合:

// Create pending intent to open the backup fragment
intentOpen.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendingIntentOpen = PendingIntent.getActivity(this, 0, intentOpen, PendingIntent.FLAG_CANCEL_CURRENT);

这在我仍然使用 onResume() 中的 Intent 时有效 setIntent(null);

关于android - onResume() 中的 getIntent() 始终返回相同的操作,如何使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24343130/

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