应用关闭状态下点击推送通知能否获取通知值?附当前实现代码
应用关闭时点击推送通知获取参数的解决方案
能获取到对应的值。你当前实现的onNewIntent方法仅在应用处于前台或后台(未完全关闭)时生效,当应用完全关闭时,点击推送通知会重新启动应用,这时候需要在onCreate方法中处理启动Intent携带的参数。
解决步骤:
- 提取公共处理逻辑:把参数解析和WebView加载的逻辑抽成公共方法,避免代码重复
- 在
onCreate中处理启动Intent:应用关闭后启动时,通过getIntent()获取推送携带的参数 - 优化
onNewIntent:更新当前Intent并复用公共方法,确保后台唤醒时参数正确
示例代码:
// 公共方法:处理Intent参数并加载WebView private void handleIntent(Intent intent) { if (intent != null && intent.hasExtra("url")) { url = intent.getStringExtra("url"); } LoadWebview(); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.your_activity_layout); // 处理应用启动时的Intent参数(适用于应用关闭后点击推送的场景) handleIntent(getIntent()); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); // 更新当前Activity的Intent,避免后续getIntent获取旧数据 setIntent(intent); // 复用公共方法处理参数(适用于应用后台时点击推送的场景) handleIntent(intent); }
额外注意事项:
- 确保推送通知的
PendingIntent设置了合适的Flag,比如FLAG_UPDATE_CURRENT或FLAG_IMMUTABLE(Android 12及以上推荐使用FLAG_IMMUTABLE),保证参数能正确传递到启动的Activity。 - 若当前Activity是Launcher Activity,建议将其
launchMode设置为singleTop或singleTask,避免重复创建Activity实例,同时确保Intent参数能正确传递。
内容的提问来源于stack exchange,提问作者Nanju K S
相关产品推荐
相关产品推荐

