【问题标题】:Open Gmail PendingIntent in background?在后台打开 Gmail PendingIntent?
【发布时间】:2014-01-16 16:16:16
【问题描述】:

我正在尝试打开一个 PendingIntent,它通过通知在后台打开 Gmail 应用程序。

步骤如下:

  1. 使用操作按钮显示通知
  2. 点击操作按钮(具有 PendingIntent)时,我想在后台启动 PendingIntent(启动 Gmail 应用程序)。
  3. 关闭通知

通知仍然是用户看到的唯一内容(即 UI 没有更改,但只有通知本身在单击操作按钮后被关闭)。

它可能是“hack-y”,但我也可以快速打开然后“最小化”gmail 应用程序?

有什么想法吗?

【问题讨论】:

  • 在后台打开 Gmail 应用会完成什么?
  • 当你在前台打开它时这是否有效?

标签: android notifications gmail android-pendingintent


【解决方案1】:

好吧,我真的不明白你能从这种行为中获得什么。

您绝对无法提供有关意图的任何有意义的额外数据(除非您是 gmail 的开发人员,我不认为是这种情况..)。

实际上,如果您提供明确启动 Gmail 应用程序的意图(通过指定包名称) - 如果 Gmail 应用程序包名称发生更改,您的代码就会中断。

现在回答您的问题:

可以在不将其置于前台的情况下启动活动:

您所要做的就是将挂起的意图所持有的意图添加到标志:FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_MULTIPLE_TASK

除非您的应用程序是启动器,否则不建议使用FLAG_ACTIVITY_MULTIPLE_TASK 标志。

gmail 主要活动将在后台创建新任务,仅此而已。

请注意,gmail 活动不会抛出 onResumeonStart 回调(因为它不在前台..),所以如果从这个回调中发生任何有意义的代码 - 它们无论如何都不会被执行..

更新

既然我知道您的目的是将电子邮件标记为“已读”,我可以告诉您,任何启动 gmail 应用程序的尝试都对您有任何好处。正如我所提到的,您不能将额外有意义的数据传递给 gamil 启动意图。根本没有这样的 API,启动主要活动根本不会做任何对您有帮助的事情。

相反,我建议你使用Gmail API's 来控制用户的收件箱

【讨论】:

  • 我的意图是通过在 bg 中打开该电子邮件的意图来欺骗 gmail 将电子邮件标记为“已读”......这仍然有效吗?
  • @Rohan:它肯定行不通。这是因为启动 gmail 主要活动不会将邮件标记为已读,直到用户单击邮件本身。
  • @Rohan:如果您希望以某种方式管理来自您自己的应用的用户 gamil 消息 - 您应该使用 Gmail API - developers.google.com/gmail
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-15
  • 2012-03-31
  • 1970-01-01
  • 2015-07-23
  • 2018-06-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多